Olumlu ve Olumsuz Olumlu Boole Yöntemi


43

Boolean metotları sadece negatif formda kullanılsalar bile, her zaman olumlu bir formda olmalı mı?

Bir varlık oluşturmadan önce var olup olmadığını kontrol etmek istediğimi söyleyin, argümanım, aşağıdaki ilk formun, ikinci formdan daha iyi olduğunu, yöntemin olumlu formda kullanılıp kullanılmadığını belirtmek.

Özet olarak, if(!affirmative)okumaktan daha kolay buluyorum if(negative). Düşünceme katılmayan bir meslektaşım var mı?

İlk Form:

int entity_id = 42;
if(!entity_exists(entity_id)) create_entity(entity_id);

İkinci form:

int entity_id = 42;
if(entity_not_exist(entity_id)) create_entity(entity_id);

3
C ++? peki yaif (not entity_exists(entity_id))
Kos,


için-olabilir-to-mah-to. Açıkçası, !karakteri tekrar çok özledim, tekrar okuyana kadar kodu yanlış anlamama neden oldum. Bu yüzden muhtemelen iş arkadaşınızla daha fazla katılıyorum. İncelendiğinde doğru olarak değerlendiren formu seviyorum.
Berin Loritsch

Sadece if (!exists) create(), birçok dilde / çerçevede kötü bir uygulama olarak görülebileceğini söylemek için , sadece güvenli bir konu olma eğiliminde olmadığını söylemek istedim . Genellikle, tercih edilen yaklaşım, create()varlığın zaten var olduğunu söyleyen belirli istisnalar veya geri dönüş kodları aramak ve bunları kullanmaktır. Bu elbette gerçek soruya bir cevap değildir (bu yüzden sadece yorumdur).
julealgon

Yanıtlar:


61

Boolean metotları sadece negatif formda kullanılsalar bile, her zaman olumlu bir formda olmalı mı?

Bu tür şeyler hakkında kurallar yapmak biraz fazla görünüyor - kodlama standartları belgesinde, boolean özellikleri için negatif adlar kullanmayacağınızı söyleyen bir kılavuz görmek istemem . Ancak kişisel bir stil olarak, isimleri pozitif tutmaya çalışmak iyi bir ideal olabilir. Ancak, aynı zamanda bu sıska ve kolay cevapsızlığa ihtiyaç duymamaktan da kaçınmanın iyi olacağını düşünüyorum !. Bir kişi genellikle negatif bir ismi pozitif olana çevirmenin yollarını bulabilir:

  • accountHasCharges
  • accountIsClear(aynı !accountHasCharges)

Netlik en önemli husustur ve negatif yöntem adlarından kaçınmak için iyi bir neden, çift negatiflere veya daha kötüye gitmelerine neden olmalarıdır:

  • isComplete // Tamam
  • isNotComplete //! isComplete genellikle daha iyidir
  • isIncomplete // eğer 'eksik' nesnenin bilinen bir hali ise mantıklı gelebilir
  • !isNotComplete // korkunç
  • !isNotComplete == 0 // kalıcı tatile yol açabilir

5
"Kodlama standartları belgesinde, boole özellikleri için negatif adlar kullanmayacağınızı söyleyen bir kılavuz görmek istemem ." - Bunu burada bırakacağım ...
AakashM

16
Sen unuttun!isNotIncomplete
Ben Lee

Yani zıt olurdu entity_existsolmak entity_should_be_created(yerine entity_not_exists)? Ya da belki entity_missingDan'in önerisine göre?
ADTC

1
Bu, bir kodlama standartları belgesinin "zorunluluk" veya "zorunluluk" yerine "tercih" kelimesini kullanabileceği yerdir.
Wayne Conrad,

15

Olumlu ifadenin okunmasının daha kolay olduğu konusunda hemfikirim. Deneyebilirsin

Üçüncü Form

int entity_id = 42;
if (entity_is_missing(entity_id)) create_entity(entity_id);

veya

Dördüncü Form

int entity_id = 42;
if (is_entity_missing(entity_id)) create_entity(entity_id);

2

Aynı zamanda yönteminizin nasıl kullanılacağına da bağlı. Olumlu ve olumsuz durumlarda hem de kullanılacaksa

if (!entity_exists(entity_id)) create_entity(entity_id);

if (entity_exists(entity_id)) publish_entity(entity_id);

Daha sonra, yöntem adı, yukarıdaki gibi, olumlu olmalıdır. Nasıl kullanılacağından emin değilseniz, yukarıdan devam edin.

Ancak SADECE negatif durumda kullanılıyorsa, aşağıdakiler kabul edilebilir (belki de istenir)

if (entity_not_exists(entity_id)) create_entity(entity_id);

ya da daha iyisi, daha olumlu olması için yeniden

if (entity_is_absent(entity_id)) create_entity(entity_id);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.