Alıntı (acehreli):
> Hayır, en/boy sağ alt köşe değil: dörtgenin eni ve boyu.
Tamam, üyeleri private yapalım. Türün bir üye işlevini çağırıyoruz ve bu işlevden çıkarken belirli bir koşulun bozulmamasını istiyoruz: İşleve girildiğinde falanca üyenin değeri ne ise, işlevden çıkıldığında da o olsun. Yani işlevin davranışını denetlediğimiz için bunun private ile bir ilgisi yok çünkü bu işlev belki bir yanlışlık sonucunda üyeyi değiştirebilir.
Her ne kadar en doğal yer olarak görünse de bunu 'out' bloğunda denetleyemiyoruz.
Bu sabah, yolda biraz düşündüm de in/out kümeleri için hiç bir sorun yok! Çünkü Andrei'nin yaptığı gibi, bu iki küme arasında iletişim istiyorsak 'scope('exit')' kullanabiliriz. Çünkü bu, bir nevi body kümesi içinde out kümesini kullanmaya benzemektedir. Gerçi geri dönüşlü işlevlerde return'nün bir kopyası bu kümeye özel bir şey yapmazsak gelmeyecek.
Biz teknik olarak in kümesine ihtiyacımız olmadığına (in yerine body girişini kullanabildiğimize) göre, bu şekilde nested (içiçe) yapı gerektiğinde kullanılabilir. Öyle ya, sonuçta bunlar release olduğunda kaybolan olanaklar.
Bence in/out kümelerinin birbirine her türlü şekilde (in'nin ayrı bir küme olması; out'un ise işleyiş sırasından dolayı komşularına etkisi olmaması) yalıtımda olması gerekiyor. Çünkü onları tek taraflı da olsa dış dünyadan bağımsız (yan etkisiz) çalışması daha doğru olsa gerek. Zaten biz bunları, assert'leri bir düzene sokmak için kullanmıyor muyuz?
Elbette assert'ün, programı sonlandırması yan etki değil, olsa olsa doğrudan bir etki. Öyleyse tıpkı unittest'ler (tüm modülü test eden kümeler) gibi in/out kümelerini akan veriyi işlevin kendisini test etmek için kullanmalıyız. Belki tek farkı, bunları çalıştırmak için ek bir parametreye ihtiyaç duymamamız...
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]