Đồng nghiệp của bạn thực sự đang cố gắng áp dụng thiết kế theo hợp đồng (DbC) từ ngôn ngữ Eiffel và dựa trên cuốn sách: Xây dựng phần mềm hướng đối tượng, Tái bản lần thứ 2.
Khi anh ta sử dụng khẳng định, sẽ là {P} -part của Hoare Logic hoặc Hoare Triple: {P} C {Q}, trong đó {P} là khẳng định điều kiện tiên quyết (ion) và {Q} là the post-condition khẳng định (ion) s.
Tôi sẽ lưu ý những lời khuyên quan trọng được đưa ra về tính năng khẳng định trong PHP có lỗi. Bạn không muốn sử dụng mã lỗi. Điều bạn thực sự muốn là các nhà sản xuất PHP sửa lỗi trong phần khẳng định. Cho đến khi họ làm như vậy, bạn có thể sử dụng khẳng định, nhưng hãy sử dụng nó có lưu ý đến trạng thái lỗi hiện tại của nó.
Hơn nữa, nếu tính năng khẳng định có lỗi, thì tôi khuyên bạn không nên sử dụng nó trong mã sản xuất. Tuy nhiên, tôi khuyên bạn nên sử dụng nó trong mã phát triển và thử nghiệm nếu thích hợp.
Cuối cùng - nếu bạn thực hiện một nghiên cứu về thiết kế theo hợp đồng, bạn sẽ thấy rằng có những hậu quả khi sử dụng các khẳng định Boolean dựa trên sự kế thừa cổ điển hướng đối tượng - nghĩa là - bạn không được làm suy yếu điều kiện trước, cũng như không được làm suy yếu điều kiện sau. Làm như vậy có thể gây nguy hiểm cho các đối tượng hậu duệ đa hình của bạn tương tác với nhau. Cho đến khi bạn hiểu điều đó nghĩa là gì - tôi sẽ để nó yên!
Hơn nữa - tôi thực sự khuyên các nhà sản xuất PHP nên nghiên cứu toàn diện về thiết kế theo hợp đồng và cố gắng đưa nó vào PHP càng sớm càng tốt! Sau đó, tất cả chúng ta đều có thể hưởng lợi từ việc có một trình biên dịch / thông dịch nhận biết DbC, sẽ xử lý các vấn đề được lưu ý trong các câu trả lời (ở trên):
- Một trình biên dịch nhận biết thiết kế theo hợp đồng được triển khai đúng cách (hy vọng) sẽ không có lỗi (không giống như khẳng định PHP hiện tại).
- Một trình biên dịch nhận biết thiết kế theo hợp đồng được triển khai đúng cách sẽ xử lý các sắc thái của quản lý logic xác nhận đa hình cho bạn thay vì khiến bạn phải suy nghĩ nhiều về vấn đề này!
LƯU Ý: Ngay cả việc bạn sử dụng if
-statement để thay thế cho khẳng định (điều kiện trước) cũng sẽ phải chịu hậu quả nghiêm trọng nếu được sử dụng để củng cố điều kiện trước hoặc làm suy yếu điều kiện sau. Để hiểu điều đó có nghĩa là gì, bạn sẽ cần phải nghiên cứu thiết kế theo hợp đồng để biết! :-)
Chúc các bạn học và học vui vẻ.
'isset
(dòng mã vớiassert
) không? Không chỉisset
(không có trích dẫn duy nhất,'
)?