İş arkadaşınız gerçekten Eyfel dilinden sözleşme yoluyla tasarım (DbC) uygulamaya çalışıyor ve şu kitabı temel alıyor: Nesne Yönelimli Yazılım Oluşturma, 2. Baskı.
İddia, kullandığı şekliyle, Hoare Mantığının {P} -bölümü veya Hoare Üçlü: {P} C {Q}, burada {P} önkoşuldur (ion) s ve {Q} son koşul iddia (iyon) s.
PHP'de hata içeren iddia özelliği hakkında verilen tavsiyeleri not alacağım. Buggy kodunu kullanmak istemezsiniz. Gerçekten istediğiniz şey, PHP'nin yapımcılarının assert'teki hatayı düzeltmesidir. Onlar yapana kadar, assert'i kullanabilirsiniz, ancak mevcut hatalı durumuna dikkat ederek kullanın.
Üstelik assert özelliği hatalıysa üretim kodunda kullanmamanızı öneririm. Yine de, uygun olduğunda geliştirme ve test kodunda kullanmanızı tavsiye ederim.
Son olarak - sözleşme yoluyla tasarım çalışması yaparsanız, Boolean iddiaları nesneye yönelik klasik kalıtım ışığında kullanmanın sonuçları olduğunu göreceksiniz - yani - bir ön koşulu asla zayıflatmamalı veya bir son koşulu zayıflatmamalısınız. Bunu yapmak, birbirleriyle etkileşime giren polimorfik alt nesneler için tehlikeli olabilir. Bunun ne anlama geldiğini anlayana kadar - onu yalnız bırakırım!
Dahası, PHP üreticilerinin sözleşme yoluyla kapsamlı bir tasarım çalışması yapmalarını ve bunu en kısa sürede PHP'ye koymalarını şiddetle tavsiye ederim! O zaman hepimiz, yanıtlarda (yukarıda) belirtilen sorunları ele alacak DbC'ye duyarlı bir derleyici / yorumlayıcıya sahip olmaktan faydalanabiliriz:
- Düzgün bir şekilde uygulanan sözleşmeye göre tasarıma duyarlı bir derleyici (umarız) hatasız olacaktır (mevcut PHP'nin iddia ettiği gibi).
- Düzgün bir şekilde uygulanmış, sözleşmeye dayalı tasarıma duyarlı bir derleyici, beyninizi konunun üzerine yıkmak yerine, polimorfik iddia mantığı yönetiminin nüanslarını sizin için halledecektir!
NOT: if
Bir ön koşulu güçlendirmek veya bir son koşulu zayıflatmak için kullanılırsa, bir iddianın (ön koşul) yerine bir- ifadesini kullanmanız bile çok ciddi sonuçlara yol açacaktır. Bunun ne anlama geldiğini anlamak için, bilmek için sözleşmeye göre tasarım çalışmanız gerekecek! :-)
İyi eğitim ve öğrenim.
'isset
(kod satırı ileassert
)? Sadece değilisset
(tek alıntı olmadan'
)?