Kısa süre önce Design by Contract'ı (DbC) keşfettim ve kod yazmanın son derece ilginç bir yolunu buldum. Diğer şeylerin yanı sıra, teklif gibi görünüyor:
- Daha iyi belgeler. Sözleşme dokümantasyon olduğundan, birinin eski olması imkansızdır. Ek olarak, sözleşme tam olarak bir rutinin ne yaptığını belirttiğinden, yeniden kullanımın desteklenmesine yardımcı olur.
- Basit hata ayıklama. Programın yürütülmesi bir sözleşmenin başarısız olduğu anı durdurduğu için, hatalar yayılamaz ve ihlal edilen belirli iddialar muhtemelen vurgulanacaktır. Bu, geliştirme ve bakım sırasında destek sunar.
- Daha iyi statik analiz. DbC temel olarak sadece Hoare mantığının bir uygulamasıdır ve aynı prensipler geçerli olmalıdır.
Karşılaştırmada maliyetler oldukça küçük görünüyor:
- Ekstra parmakla yazma. Çünkü sözleşmelerin hecelenmesi gerekiyor.
- Yazma sözleşmelerinde rahatlamak için bir miktar eğitim alıyor.
Şimdi, öncelikle Python'a aşina olduğumda, ön koşulları yazmanın (sadece uygunsuz girdi için istisnalar atma) aslında mümkün olduğunu ve bazı post-koşulları tekrar test etmek için iddiaları kullanmanın mümkün olduğunu fark ediyorum. Ancak, "eski" veya "sonuç" gibi bazı özellikleri, nihayetinde Pythonic’in dışında olduğu düşünülen fazladan bir sihir olmadan simüle etmek mümkün değildir. (Buna ek olarak, destek sunan birkaç kütüphane var, ama nihayetinde çoğu geliştiricinin yapmadığı gibi bunları kullanmanın yanlış olacağını vibe aldım.) Bunun diğer diller için de benzer bir problem olduğunu kabul ediyorum (elbette hariç) Eyfel
Sezgim bana destek eksikliğinin, uygulamanın bir tür reddedilmesinin bir sonucu olması gerektiğini, ancak çevrimiçi aramaların verimli olmadığını söyledi. Birisi neden çoğu modern dilin bu kadar az destek sunduğunu açıklayabilir mi acaba? DbC hatalı veya aşırı pahalı mı? Yoksa Ekstrem Programlama ve diğer metodolojilerden dolayı eski mi?