Java SE 8 kommt mit einem neuen Mechanismus für Daten, die Einführung LocalDate
, LocalTime
und LocalDateTime
Klassen Zeitmomente darzustellen. Um einen solchen Zeitpunkten eine Reihe von Methoden zu manipulieren sind gegeben: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
und so weiter.
Ich habe immer gedacht, dass gute Praxis darin besteht, Methoden nach Verben zu benennen, die ihren Zweck beschreiben, da Methoden tatsächlich auszuführende Operationen sind, die eine Aktion ausführen . Nur zu erwähnen, wenn Sie Klassen wie betrachten StringBuilder
, zum Beispiel Methoden Namen sind append
, insert
, delete
...
Aus diesem Grunde ist es mir nicht richtig klingen , ein Verfahren zu benennen plusDays
statt sumDays
, minusDays
statt subtractDays
. Ich finde es nur sehr ärgerlich? Was denkst du?
Der einzige Grund, den ich mir vorstellen kann, ist, dass Datumsangaben unveränderliche Objekte sind. Wenn Sie also aufrufen plusDays
, fügen Sie dem ursprünglichen Objekt keine Tage hinzu, sondern erstellen ein neues Objekt mit neuen Eigenschaften. Dies ist jedoch sehr subtil.
sqrt
ist es nur ein Wort, das Programmierer erkennen und kennen müssen. Das englische Wort ist übrigens "Quadratwurzel". Aber Dinge nach dem zu benennen, was im Englischen selbstverständlich ist, ist nicht gut. Nehmen wir zum Beispiel das Wort "illegal", ein perfektes englisches Wort. Wenn jedoch jemand seine Methode benennt, kann isIllicit
ich sagen, dass ich bei jedem Blick auf diesen Methodenaufruf meine Augäpfel herausreißen möchte. Es sieht einfach schrecklich aus und es muss einen besseren Weg geben, die Idee auszudrücken.
sum
klingt in diesem Zusammenhang falsch. Ich bevorzuge .net AddDays
.
Math.addExact(1, 2)
weil du sagst "addiere 1 und 2". tomorrow.plusDays(2)
weil du sagst "morgen plus 2 tage". Wenn addExact
ein Mitglied von Integer
irgendwie gewesen wäre, wäre es gewesen 1.plusExact(2)
.
plusDays
, ein neues Datum x Anzahl von Tagen in die Zukunft zurückzugeben, wohingegen addDays
ich erwarten könnte, das ursprüngliche Objekt zu mutieren. Das bin nur ich, ich kenne mich mit Java nicht so gut aus.
sqrt
die die Quadratwurzel nimmt. Die Benennung dieser MethodetakeSqrt
mag nach Ihrer Regel sinnvoll erscheinen, aber die Benennung würde die Methode weder lesbarer noch klarer machen.