Tôi nghĩ rằng thực hành tốt nhất là thực hiện các kiểm tra này chỉ khi chúng sẽ thất bại vào một ngày nào đó. Nếu sẽ giúp đỡ khi bạn làm như sau.
Gỡ rối
không có điểm để kiểm tra xem chúng khi một số chức năng riêng trong một module, trong đó có một nhà duy trì duy nhất, trao đổi dữ liệu. Tất nhiên, có những ngoại lệ, đặc biệt nếu ngôn ngữ của bạn không có hệ thống kiểu tĩnh hoặc dữ liệu của bạn là "stringly typed".
Tuy nhiên, nếu bạn hiển thị API công khai, một ngày nào đó, người nào đó sẽ không làm điều kiện tiên quyết của bạn. Hơn nữa là người duy trì mô-đun gọi điện từ bạn (trong cấu trúc tổ chức và ở vị trí thực tế), càng có nhiều khả năng nó sẽ xảy ra. Và khi nó xảy ra, một tuyên bố rõ ràng về sự thất bại điều kiện tiên quyết, với một đặc điểm kỹ thuật nơi nó xảy ra, có thể tiết kiệm thời gian gỡ lỗi. The Law of Leaky Abstractions vẫn còn đúng ...
QA
kiện tiên quyết thất bại giúp QA để gỡ lỗi các xét nghiệm của họ. Nếu một đơn vị kiểm tra cho một mô-đun gây ra các mô-đun để mang lại thất bại điều kiện tiên quyết, nó có nghĩa là thử nghiệm là không chính xác, không phải mã của bạn. (Hoặc, kiểm tra điều kiện tiên quyết của bạn là không chính xác, nhưng điều đó ít có khả năng hơn).
Nếu một trong các phương tiện thực hiện QA là phân tích tĩnh, thì kiểm tra điều kiện tiên quyết, nếu chúng có ký hiệu cụ thể (ví dụ: chỉ những séc này sử dụng macro assert_precondition
) cũng sẽ trợ giúp. Trong phân tích tĩnh, điều quan trọng là phải phân biệt các lỗi đầu vào và mã nguồn không chính xác.
Documentation
Nếu bạn không có nhiều thời gian để tạo ra tài liệu, bạn có thể thực hiện viện trợ mã của bạn văn bản mà đi kèm với nó. Kiểm tra điều kiện tiên quyết rõ ràng và rõ ràng, được nhận thức riêng biệt với phần còn lại của việc thực hiện, "tài liệu" đầu vào có thể ở một mức độ nào đó. (Một cách khác để ghi lại mã của bạn theo cách này là viết các bài kiểm thử đơn vị).
Nguồn
2010-05-28 11:38:06
Câu trả lời hay! Tôi đang tìm ai đó để nói điều gì đó về Luật Demeter. Đó là chính xác lý do tại sao trong xác nhận Java chỉ được sử dụng để kiểm tra điều kiện tiên quyết trong phương pháp riêng, vv – latenightcode