Merhaba Ali Hocam,
Önceki başlıkta şöyle bir cevabınız vardı:
On Tuesday, 4 October 2022 at 18:36:53 UTC, Ali Çehreli wrote:
>On 10/2/22 23:13, Ali Çehreli wrote:
>On 10/2/22 20:30, Salih Dincer wrote:
> >Gerçi nesne/işlevlerdeki yüklem (predicate) ifadelerini
sevmediğinizi
biliyordum ve eminim kendinize göre haklı sebepleriniz
vardır.
"Yüklem"i yanlış mı kullandım? "Fiil" daha mı doğruydu? Yanlış
anlaştığımız kesin çünkü predicate de severim yüklem de. (?)
:)
O konuyu geç anladım: Nitelik (property) işlevlerinde sevmiyorum. Örneğin, .getLength() yerine .length() olmalı.
Eğer işlev bir iş görüyorsa örneğin dosyaOluştur() gibi olmalı.
Ali
Yabancı forumda @property
kullananlar oylanırken (sanırım Rikki Cattermole açmıştı) 4. sayfanın sonunda, mealen (çeviride hata olabilir) şöyle özetlendi:
02/10/2022 03:12'de Dom DiSc şunu yazdı:
> >@property
kazanımları nelerdir ve "özellik" tarafına çekilmelidir?
Bir üyeye erişim üzerinde kontrol sahibi olmanızı sağlar
- okuyabilirsiniz (getter varsa)
- yazabilirsiniz (setter varsa)
- üzerinde hem okuyan hem de yazan işlemleri uygulayabilirsiniz (hem getter hem de setter varsa ++ gibi)
- adresini alamazsınız (bunu istiyorsanız işlevi veya değişkeni kullanın)
Tabi şu an büyük tartışma konusu çünkü kodların kırılmaması için kullanmayın deniyor. Ama en basitten std.array.Appender
'da onlarla dolu. Hatta Phobos'a baktığımızda her yerde karşınıza çıkabilir. Neyse bu ayrı bir konu...
Ali hocanın bahsettiği, kelimelere verdiğimiz anlamı haketmesi veya sahip olduğumuz kazanımları karşılaması açısından iyi seçim yapmak gerekiyor. Yoksa aradan uzun zaman geçtiğinde siz bile anlamayacaksınız :)
Hocam bilmiyorum konuyu doğru yerden mi başlattım. Size cevaben ise ben kendi değişkenlerime doğrudan erişilmeyip getter/setter özelliklerini kullanmaya bayılıyorum. Ama D bu konuda bizim elimizden tutmuyor ve herkes bildiğini okuyor tabi :)
Aslında .length
olayı oturdu ve sanırım herkes kullanıyor. Ama ben bazen ona parametre aldırıyorum. Çünkü kendi türümde bana neyin uzunluğunu vereceğini iyi tasarlayamıyorum. Bir sürü de .length
olmasın diye varsayılan parametre ile birlikte kullanıyorum. Eğer T.sizeof
gibi bir şeyi döndürmesini istersem atıyorum şöyle bir şey:
auto length(bool bitLength = false) {
size_t result;
// ...
return result;
}
Yukardaki gibi olan bir işlevi kendiTürüm.length(true)
şeklinde kullanıyorum. Tabi bu basit olan ve şu an aklıma gelen. Sanırım enum'lar kullanmıştım. Şimdi hatırlayamadım ama konusu geçerse örnek kodları bulup paylaşırım.
Eminim yukardaki verdiğim örneğe şöyle bir gülümsediniz :)
Ben de anlamsız buluyorum ve gerçi böyle bir işlev yazmamışımdır (sanırım!) yani belirsizlik var çünkü. Bu durumda bitLength()
isminde ayrı bir işlev gerekir. Neyse çok uzattım.
Sevgiler, saygılar...