Java SE 8 jest wyposażony w nowy mechanizm dat wprowadzenia LocalDate
, LocalTime
i LocalDateTime
klas do reprezentowania chwilach czasu. Manipulować takie momenty, zestaw metod podano: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
i tak dalej.
Zawsze myślałem, że dobrą praktyką było nazywanie metod po czasownikach opisujących ich cel, ponieważ metody są w rzeczywistości operacjami do wykonania, czymś, co wykona akcję. Wystarczy wspomnieć, jeśli wziąć pod uwagę zajęcia jak StringBuilder
na przykład nazwy metod są append
, insert
, delete
...
Dlatego dla mnie to nie brzmi prawo nazywania metodę plusDays
zamiast sumDays
, minusDays
zamiast subtractDays
. Po prostu uważam to za bardzo irytujące? Co myślisz?
Jedynym powodem, dla którego mogę wymyślić, jest to, że daty są niezmiennymi obiektami, więc dzwoniąc plusDays
, nie dodajesz dni do oryginalnego obiektu, ale tworzysz nowy z nowymi właściwościami, ale to bardzo subtelne.
sqrt
to tylko słowo, które programiści powinni rozpoznać i poznać. Nawiasem mówiąc, angielskie słowo to „pierwiastek kwadratowy”. Ale nazywanie rzeczy zgodnie z tym, co naturalne w języku angielskim, nie jest dobre. Weźmy na przykład słowo „niedozwolone”, na przykład doskonale angielskie słowo angielskie. Jeśli jednak ktoś isIllicit
nazwałby tę metodę, powiedz, że myślę, że chciałbym oderwać oczy za każdym razem, gdy patrzę na to wywołanie metody. Wygląda to po prostu okropnie i musi istnieć lepszy sposób na wyrażenie tego pomysłu.
sum
w tym kontekście brzmi źle. Wolę .net AddDays
.
Math.addExact(1, 2)
ponieważ mówisz „dodaj 1 i 2”. tomorrow.plusDays(2)
ponieważ mówisz „jutro plus 2 dni”. Gdyby addExact
był jakimś członkiem, Integer
tak by było 1.plusExact(2)
.
plusDays
się zwrócić nową datę x liczbę dni w przyszłość, podczas addDays
gdy mógłbym oczekiwać mutacji oryginalnego obiektu. To tylko ja, ale ja nie znam się na Javie.
sqrt
pierwiastek kwadratowy. Nazywanie tej metodytakeSqrt
może wydawać się sensowne zgodnie z twoją regułą, ale nazywanie jej nie uczyni tej metody bardziej czytelną ani nie uczyni jej bardziej zrozumiałą.