Tôi sẽ phòng thủ như bạn cần phải được. Một chút mơ hồ, tôi đoán vậy nhưng tôi sẽ cố gắng giải thích.
Khi bạn đúng một phương thức, nếu phương thức đó có các tham số đầu vào, bạn phải đưa ra quyết định về những gì bạn mong đợi các tham số đó. Trong các tình huống và địa điểm trong một ứng dụng, điều này sẽ khác nhau. Ví dụ: nếu một phương thức hoặc một đoạn mã đang chấp nhận dữ liệu từ đầu vào của người dùng thì bạn sẽ muốn bao gồm tất cả các cơ sở mã và xử lý bất kỳ đầu vào nào phù hợp cho dù thông qua một thông báo lỗi hoặc một cách hiển thị dữ liệu không thể chấp nhận được.
Nếu phương thức là một API tiếp xúc. Bạn không thể kiểm soát những gì đang đến vì vậy bạn nên thử và bao gồm tất cả các khía cạnh và chương trình phù hợp.
Đối với các phương thức được sản xuất trong công cụ cốt lõi của dự án của bạn, ở đây bạn có quyết định đưa ra. Tôi có cho rằng dữ liệu đến đã được sàng lọc trước và xác thực trước khi đến hay tôi nên đưa vào các kiểm tra cần thiết. Tôi đoán điều này phụ thuộc vào mức độ khái niệm của phương pháp và nếu đây là nơi chấp nhận được để kiểm tra. Vì vậy, những điều tôi có thể xem xét là:
1) Đây có phải là nơi duy nhất tôi cần thực hiện kiểm tra này không? Biến này có cần được kiểm tra ở nhiều nơi khác nhau cho tình trạng này không. Nếu vậy tôi có thể thực hiện kiểm tra một lần cao hơn chuỗi và sau đó giả sử tính hợp lệ
2) Các thành phần khác của hệ thống dự kiến sẽ hoạt động với các phương thức và giao diện tôi viết. Nếu vậy, bạn có thể kiểm soát thông qua các câu lệnh xác nhận gỡ lỗi, gỡ lỗi ngoại lệ, nhận xét phương thức và kiến trúc hệ thống chung về kết quả bạn yêu cầu hoặc dữ liệu cần kiểm tra được đưa ra.
3) Kết quả của sự thất bại tại thời điểm này trong mã. Nó sẽ gây ra toàn bộ điều thất bại? Bất kỳ lỗi nào sẽ được bắt ở nơi khác và ít nhất lỗi đó sẽ bị bắt.
4) Có ý nghĩa gì khi đặt một kiểm tra ở đây? Đôi khi, kiểm tra một phần dữ liệu bị hỏng có thể mặc dù giúp giải quyết vấn đề tại thời điểm đó và không xảy ra lỗi có thể giúp che giấu nó. Tại thời điểm đó, bạn có thể mất hàng giờ để theo dõi một vấn đề khác chỉ để tìm ra vấn đề thực sự là do kiểm tra dữ liệu hợp lệ trong chuỗi sự kiện xảy ra với người dùng / nhà phát triển đã được báo cáo.
Nói chung, tôi là một lập trình viên phòng thủ, tuy nhiên tôi cũng tin rằng với TDD kỹ lưỡng và kiểm tra đơn vị, bạn có thể kiểm tra mã ở các cấp độ yêu cầu và tự tin rằng nó hoạt động như bình thường khi đến bất kỳ phần cấp thấp nào .