Wpis z mikrobloga

Tym razem pytanie do programistów Javy. :)


Jak wiadomo, wypada aby gettery które zwracają boolean zaczynały się nie od get, a od is. No to mamy na przykład klasę Book, a dowolna książka może być akurat otwarta lub zamknięta. I załóżmy, że w tej klasie jest pole typu boolean, które określa czy jest zamknięta czy otwarta. No więc skoro metoda nazywa się isOpen(), to jak powinno nazywać się pole? Po prostu open, czy również isOpen (nie będzie to wprowadzające w błąd)? Czy może jeszcze inaczej?

#programowanie #stylkodowania #java
  • 13
  • Odpowiedz
@Onoki: „open” w formie przeszłej to… „open” – nie ma czegoś takiego jak „opened”.

Tak więc pole

open
i metoda

isOpen()
lub odwrotnie podejść do tematu, czyli

closed
i

isClosed()
  • Odpowiedz
@MacDada: I tak też do tej pory pisałem, jednakże "open" mi się kojarzy z wykonywaniem czynności, jak się nie wie jaki jest typ to to może wprowadzać w błąd i trzeba przewijać plik na górę przy czytaniu kodu. :(
  • Odpowiedz
Ale tu chodzi o cechę, a nie czynność, więc chyba

isOpen()
powinno być lepsze niż

isOpened()
(to drugie sugeruje, że było zamknięte, a zostało otworzone).

Zmieniłbym na

closed
– mnie problemów ;p
  • Odpowiedz
@MacDada:

Niby poprawnie gramatycznie jest isOpen ale w kodzie lepiej wygląda isOpened.

Tak samo jak kolekcja obiektów Person u mnie w kodzie to nigdy People tylko Persons.
  • Odpowiedz
@MacDada: dla mnie rownoznaczne byloby to z jakims boolem ktory warunkowo otwiera ksiazke, a nie indykuje ze ksiazka jest otwarta. ale jak juz pisalem - jestem lamerem. pozdrawiam.
  • Odpowiedz
Ale tu chodzi o cechę, a nie czynność, więc chyba isOpen() powinno być lepsze niż isOpened() (to drugie sugeruje, że było zamknięte, a zostało otworzone).


@MacDada: Miałem na myśli metodę isOpen() i pole open. Że to zmienna open w kodzie kojarzy się z czynnością, bo isOpen() jest klarowna. :)
  • Odpowiedz
@Onoki: imo tylko metoda może sugerować czynność, nigdy pole więc dwuznaczności nie będzie z tym open czy m_open a mniej węgiersko :) isActive() -> active, isFinished() -> finished
  • Odpowiedz