Nếu bạn phải chọn các kỹ thuật yêu thích (thông minh) cho mã hóa phòng thủ, chúng sẽ là gì? Mặc dù các ngôn ngữ hiện tại của tôi là Java và Objective-C (có nền tảng về C ++), vui lòng trả lời bằng bất kỳ ngôn ngữ nào. Nhấn mạnh ở đây sẽ là về các kỹ thuật phòng thủ thông minh khác với những kỹ thuật mà 70% chúng ta ở đây đã biết. Vì vậy, bây giờ là thời gian để đào sâu vào túi thủ đoạn của bạn.
Nói cách khác, hãy cố gắng nghĩ về những thứ khác ngoài ví dụ không thú vị này :
if(5 == x)
thay vìif(x == 5)
: để tránh sự phân công ngoài ý muốn
Dưới đây là một số ví dụ về một số thực tiễn lập trình phòng thủ tốt nhất hấp dẫn (ví dụ cụ thể về ngôn ngữ trong Java):
- Khóa các biến của bạn cho đến khi bạn biết rằng bạn cần thay đổi chúng
Đó là, bạn có thể khai báo tất cả các biến final
cho đến khi bạn biết rằng bạn sẽ cần thay đổi nó, tại thời điểm đó bạn có thể loại bỏ final
. Một thực tế thường được biết là điều này cũng hợp lệ cho các tham số của phương thức:
public void foo(final int arg) { /* Stuff Here */ }
- Khi có điều gì xấu xảy ra, hãy để lại dấu vết bằng chứng
Có một số điều bạn có thể làm khi có ngoại lệ: rõ ràng đăng nhập nó và thực hiện một số dọn dẹp sẽ là một số ít. Nhưng bạn cũng có thể để lại một dấu vết bằng chứng (ví dụ: đặt các biến thành các giá trị sentinel như "UNABLE TO LOAD FILE" hoặc 99999 sẽ hữu ích trong trình gỡ lỗi, trong trường hợp bạn catch
tình cờ thổi qua một ngoại lệ -block).
- Khi nói đến sự nhất quán: ma quỷ nằm trong các chi tiết
Hãy nhất quán với các thư viện khác mà bạn đang sử dụng. Ví dụ, trong Java, nếu bạn đang tạo một phương pháp mà chiết xuất một loạt các giá trị làm cho thấp hơn bị ràng buộc bao gồm và các ràng buộc trên độc quyền . Điều này sẽ làm cho nó phù hợp với các phương thức như String.substring(start, end)
hoạt động theo cùng một cách. Bạn sẽ tìm thấy tất cả các loại phương thức này trong Sun JDK để hành xử theo cách này vì nó thực hiện các hoạt động khác nhau bao gồm lặp các phần tử phù hợp với mảng, trong đó các chỉ số từ Zero ( bao gồm ) đến độ dài của mảng (loại trừ ).
Vì vậy, một số thực hành phòng thủ yêu thích của bạn là gì?
Cập nhật: Nếu bạn chưa có, hãy thoải mái bấm chuông. Tôi sẽ có cơ hội nhận được nhiều phản hồi hơn trước khi tôi chọn câu trả lời chính thức .