Sözleşmeye Göre Tasarım (DbC) savunma programlamanın bir yolu olabilir mi?
Bazı durumlarda programlama bir yolu diğerinden daha iyi midir?
Sözleşmeye Göre Tasarım (DbC) savunma programlamanın bir yolu olabilir mi?
Bazı durumlarda programlama bir yolu diğerinden daha iyi midir?
Yanıtlar:
Sözleşmeye Göre Tasarım ve savunma programlaması bir anlamda birbirinin karşıtlarıdır: DbC'de, ortak çalışanlar arasındaki sözleşmeleri tanımlarsınız ve ortak çalışanların sözleşmelerini yerine getirdiği varsayımı altında program yaparsınız. Savunma programlamasında, ortak çalışanlarınızın sözleşmelerini ihlal ettiği varsayımı altında program yaparsınız .
DbC tarzında yazılmış gerçek bir kare kök rutini, sözleşmesinde, negatif bir sayı girmenize izin verilmediğini ve daha sonra hiçbir zaman negatif bir sayı ile karşılaşamayacağını varsaymaz. Savunmadan yazılmış gerçek bir karekök yordamı negatif bir sayının geçtiğini ve uygun önlemler aldığını varsayar.
Not: Elbette DbC’de bir başkasının sözleşmeyi kontrol etmesi mümkündür . Örneğin Eyfel'de, sözleşme sistemi çalışma zamanında negatif bir sayı olup olmadığını kontrol eder ve uygun bir istisna atardı. Spec # 'da, teorem prover derleme zamanında negatif sayıları kontrol eder ve rutinin hiçbir zaman negatif bir sayıdan geçmeyeceğini ispat edemezse derleme başarısız olur. Aradaki fark, programcının bu kontrolü yapmamasıdır.
Sözleşmeye Göre Tasarım (DbC) savunma programlamanın bir yolu olabilir mi?
Evet.
“Defansif Programlama” genellikle zaman harcamak için bir bahane. Genellikle olağan istisnalara yol açacak şeyleri kontrol etmek için zaman harcar. İstisnalar yerine, istisnai durum hükümleri yerine ekstra IF beyanları yazılır.
Sözleşmeyi tanımlayın ve onunla bitirin.
Birisi sözleşmeyi ihlal ettiğinde, program - olayların normal seyri sırasında - normal olarak ele alınabilecek normal istisnaları kıracak ve yükseltecektir.
"Defansif programlama" ve "Hata önleme" hataların önlenmesinden ziyade hatalar (hata önleme kontrollerinin kendileri hatalı olduğu için) eklediği gösterilebilir.
İstisna işleme, "Savunma Programlaması" ndan çok daha iyi bir istisnayı susturabilir, günlüğe kaydedebilir ve kaldırabilir.