2016-10-31 23 views
10

Wiem, że wielu sugerować tę konwencję:Konwencje nazewnictwa zmiennych i metod dla czasowników boolowskich w języku Java?

boolean deleted; 
boolean isDeleted(); 

Ale co zrobić, gdy chcesz wymienić wartość logiczną, aby wskazać, że użytkownik może wyjechać?

boolean userCanLeave 
boolean isUserCanLeave() 

boolean canUserLeave 
boolean isCanUserLeave() 

boolean userLeave 
boolean isUserLeave() 

boolean userLeave 
boolean canUserLeave() 

Nie jestem pewien, czy jest jakiś standard to czy po prostu wziąć jedną uważasz za najbardziej czytelny? Jest tu interesująca zmienna do mapowania nazw metod pozyskiwania.

+0

@TimBiegeleisen Nie, myślę, że to inny scenariusz. –

+0

Nie Myślę, że jest to przynajmniej częściowo istotne, ponieważ niektóre technologie oparte na Javie rozpoznają formy "get" i "get" pobierające. –

Odpowiedz

9

Powinieneś użyć lepszej nazwy zmiennej, takiej jak userAllowedToLeave.

A następnie użyj metody gettera jako isUserAllowedToLeave().

To przynajmniej używa gettera "is" i brzmi również poprawne gramatycznie.

+0

W pewnym sensie zgadzam się z tobą, ale czy nie sądzisz, że robi się zbyt głupio? "AllowedTo" i prefiks "jest" to samo. "AllowedTo" sprawia, że ​​jest on bardziej gramatycznie czytelny. –

+0

@TnHn - To może brzmieć głupio, ale nadal jest bardzo czytelne i łatwiejsze do zrozumienia. Użyteczność "dozwolonego" polega na tym, aby nazwa stała się poprawna gramatycznie. I nie powinieneś używać 'wyliczenia' dla tak trywialnych przypadków; to tylko doda kod do złożenia, aby go zrozumieć i wykonać! –

1

Wiele ram nadal korzystać metoda wymaga, aby ustawić wartości na fasoli, a metody te muszą być zgodne z określonym harmonogramem:

isXXX lub getXXX

więc staram się trzymać się, że nawet jeśli I” nie używam frameworków do tworzenia instancji komponentów, lub jeśli te frameworki używają odbicia, aby zamiast tego wiązały się bezpośrednio z zmiennymi. Wciąż uważam, że to dobra praktyka.

Więc getUserCanLeave()? Lub isUserLeavable()?

2

Używanie takich boole'ów to prawie zawsze zły i dezorientujący pomysł. Jeśli chcesz, aby twój kod był zrozumiały i łatwy w utrzymaniu, powinieneś użyć enum do reprezentowania stanu, być może z silnymi regułami przejścia (FSM).

Zakładając, że „urlopu” koncepcja opiera się na czy użytkownik wypełnił zadanie lub zbiór zadań, to możesz mieć

public enum UserState { inProgress, complete } 

Następnie można zaimplementować metodę leave na swojej klasy użytkownika jak ta :

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

gdzie state jest prywatną instancją enum zdefiniowaną powyżej. Następnie możesz zmienić pytanie, czy jest ono dostępne do getState, czy coś takiego jest potrzebne. Oczywiście potrzebna byłaby również metoda complete(), która odpowiednio zmieniłaby stan i która byłaby wywoływana, gdy użytkownik zakończyłby swoje zadania.