Okunabilirlik peşinde koşarken netlikten ödün vermekten kaçının .
Bundan if (user.ExistsInDatabase(db))
daha güzel okunmasına rağmen if (user.CheckExistsInDatabase(db))
, inşaatçı desenine sahip bir sınıfın durumunu (veya durumu ayarlayabileceğiniz herhangi bir sınıf) düşünün:
user.WithName("Mike").ExistsInDatabase(db).ExistsInDatabase(db2).Build();
Var ExistsInDatabase
olup olmadığını kontrol edip etmediği veya var olduğu gerçeğini belirleyip belirlemediği açık değil. Herhangi bir karşılaştırma değeri yazmazsınız if (user.Age())
ya da if (user.Name())
yazmazsınız, öyleyse neden if (user.Exists())
sadece iyi bir fikirdir çünkü bu özellik / işlev boole tipindedir ve işlevi / özelliği daha doğal İngilizce gibi okumak için yeniden adlandırabilirsiniz? Boolean dışındaki diğer türler için kullandığımız aynı kalıbı takip etmek çok mu kötü?
Diğer türlerle, bir if
ifade, bir işlevin dönüş değerini koddaki bir değerle karşılaştırır, böylece kod şuna benzer:
if (user.GetAge() >= 18) ...
"Kullanıcı nokta yaşı 18'den büyükse veya 18'e eşitse ..." şeklinde okunan doğru - bu "doğal ingilizce" değil, ancak object.verb
doğal ingilizceye asla benzemediğini ve bunun modern programlamanın basit bir yönü olduğunu iddia ediyorum ( birçok yaygın dil). Programcılar genellikle yukarıdaki ifadeyi anlamakta sorun yaşamazlar, bu nedenle aşağıdakiler daha mı kötü?
if (user.CheckExists() == true)
Normalde kısaltılır
if (user.CheckExists())
Ölümcül adımın ardından
if (user.Exists())
"Kodun yazılandan 10 kat daha sık okunduğu" söylenirken, hataların kolayca tespit edilebilmesi de çok önemlidir. Nesnenin var olmasına neden olan ve başarıya bağlı olarak doğru / yanlış döndüren Exists () adında bir işleviniz olduğunu varsayalım. Kodu kolayca görebilir if (user.Exists())
ve hatayı tespit edemezsiniz - if (user.SetExists())
örneğin kod okunduğunda hata çok daha açık olacaktır .
Ek olarak, user.Exists (), bir şeyi kontrol etmek için bir veritabanına gidip gelen karmaşık veya verimsiz kodu kolayca içerebilir. user.CheckExists (), işlevin bir şeyler yaptığını açıkça belirtir.
Ayrıca buradaki tüm yanıtlara bakın: Adlandırma Kuralları: Boolean döndüren bir yönteme ne ad verilir?
Son bir not olarak - "Sorma Sorma" nın ardından, doğru / yanlış döndüren birçok işlev yine de kaybolur ve bir nesnenin durumunu sormak yerine, ona farklı bir şekilde yapabileceği bir şey yapmasını söylersiniz. durumuna göre yollar.
isBabbyFormed