2016-10-31 52 views
10

Birçok bu kuralını önermek biliyoruz?Java'da boole fiilleri için değişken ve yöntem adlandırma kuralları?</p> <pre><code>boolean deleted; boolean isDeleted(); </code></pre> <p>Ama eğer bir kullanıcı bırakabilir belirtmek için bir boolean isim istediğinizde ne yaparsınız:

boolean userCanLeave 
boolean isUserCanLeave() 

boolean canUserLeave 
boolean isCanUserLeave() 

boolean userLeave 
boolean isUserLeave() 

boolean userLeave 
boolean canUserLeave() 

Bunun için herhangi bir standart olup olmadığından emin değilim ya da sadece en okunabilir olduğunu düşünüyorum birini alır? Burada ilginç olan, getter yöntemi isim eşlemesi değişkenidir.

+0

@TimBiegeleisen Hayır, bence bu farklı bir senaryo. –

+0

hayır Bazı Java tabanlı teknolojiler, alıcıların '' '' '' 'formunu tanıdığı için, en azından kısmen ilgili olduğunu düşünüyorum. –

cevap

9

userAllowedToLeave gibi daha iyi bir değişken adı kullanmalısınız.

Ve sonra alıcı yöntemini isUserAllowedToLeave() olarak kullanın.

Bu en azından "olan" alıcıyı kullanır ve dilbilgisel olarak da doğrudur.

+0

Bir şekilde size katılıyorum ama çok fazla para kazanmadığını düşünmüyor musunuz? "AllowedTo" ve öneki "aynı" türden bir şey yapar. "AllowedTo" sadece daha fazla dilbilgisel olarak okunabilir hale getirir. –

+0

@TnHn - Bu çok güçlü görünebilir, ancak, hala çok okunabilir ve anlaşılması daha kolaydır. "İzin ver" in yararı, sadece isminin dilbilgisel olarak doğru olmasını sağlamaktır. Ve, bu tür önemsiz durumlar için 'enum 'kullanmamalısınız; Sadece anlamak ve yürütmek için karmaşık bir kod ekleyecektir! –

1

Birçok çerçeveler hala yöntem fasulye değerleri ayarlamak için çağırır kullanın ve bu yöntemler belli bir örneğe uygun olması gerekir: Ben bile

isXXX veya getXXX

Yani o sopa deneyin Fasulye örnekleri oluşturmak için çerçeveler kullanmıyor veya bu çerçeveler yansıma yerine değişkenlere bağlanacak şekilde kullanıyorsa. Hala iyi bir uygulama olduğunu düşünüyorum.

getUserCanLeave()? Veya isUserLeavable()?

2

Booleanları bu şekilde kullanmak neredeyse her zaman kötü ve kafa karıştırıcı bir fikirdir. Kodunuzu anlaşılabilir ve kolay erişilebilir kılmak istiyorsanız, eyaleti temsil etmek için belki de güçlü geçiş kurallarıyla (FSM) bir numara kullanmalısınız. senin 'izni' kavramı, bir kullanıcı bir görevi tamamlamış veya görevleri belirledi olmadığına bağlı olduğu varsayıldığında

, o zaman

public enum UserState { inProgress, complete } 

Sonra böyle bir kullanıcı sınıfı bir yöntem leave uygulayabilir sahip olabilir : state yukarıda tanımlandığı enum özel örneği

public void leave() { if (state == UserState.complete) ... } 

. Daha sonra, böyle bir şeye ihtiyaç duyulursa, getState'e ilişkin soruya referame edilebilir. Elbette, durumu uygun şekilde değiştirecek ve kullanıcı görevlerini tamamladığında çağrılacak olan complete() yöntemine de ihtiyacınız olacaktır.