D - Sözleşme Programlama
D programlamada sözleşme programlama, basit ve anlaşılır bir hata işleme yöntemi sağlamaya odaklanmıştır. D'deki sözleşme programlama, üç tür kod bloğu tarafından gerçekleştirilir -
- vücut bloğu
- blokta
- dışarı blok
D'de Vücut Bloğu
Gövde bloğu, gerçek işlevsellik yürütme kodunu içerir. Gövde bloğu zorunlu iken giriş ve çıkış blokları isteğe bağlıdır. Aşağıda basit bir sözdizimi gösterilmektedir.
return_type function_name(function_params)
in {
// in block
}
out (result) {
// in block
}
body {
// actual function block
}
D'de Ön Koşullar için Blokta
Blok içi, giriş parametrelerinin kabul edilebilir ve kod tarafından ele alınabilecek aralıkta olup olmadığını doğrulayan basit ön koşullar içindir. Giriş bloğunun bir yararı, tüm giriş koşullarının bir arada ve işlevin gerçek gövdesinden ayrı tutulabilmesidir. Parolayı minimum uzunluğu için doğrulamanın basit bir ön koşulu aşağıda gösterilmiştir.
import std.stdio;
import std.string;
bool isValid(string password)
in {
assert(password.length>=5);
}
body {
// other conditions
return true;
}
void main() {
writeln(isValid("password"));
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında, önceki bölümde oluşturulan dosyayı okur ve aşağıdaki sonucu verir -
true
D'deki Yazı Koşulları için Çıkış Blokları
Çıkış bloğu, fonksiyonun dönüş değerleriyle ilgilenir. Dönüş değerinin beklenen aralıkta olduğunu doğrular. Hem giriş hem de çıkış içeren basit bir örnek aşağıda ayları, yılı birleşik ondalık yaş formuna dönüştüren gösterilmektedir.
import std.stdio;
import std.string;
double getAge(double months,double years)
in {
assert(months >= 0);
assert(months <= 12);
}
out (result) {
assert(result>=years);
}
body {
return years + months/12;
}
void main () {
writeln(getAge(10,12));
}
Yukarıdaki kod derlendiğinde ve çalıştırıldığında, önceki bölümde oluşturulan dosyayı okur ve aşağıdaki sonucu verir -
12.8333