Java SE 8 è dotato di un nuovo meccanismo per le date, l'introduzione LocalDate
, LocalTime
e LocalDateTime
le classi per rappresentare istanti di tempo. Per manipolare tali istanti, un insieme di metodi sono indicati: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
e così via.
Ho sempre pensato che la buona pratica consistesse nel nominare metodi dopo che i verbi ne descrivevano lo scopo, dato che i metodi sono, in realtà, operazioni da eseguire, qualcosa che eseguirà un'azione. Solo per citare, se si considera le classi come StringBuilder
, per esempio, i nomi di metodi sono append
, insert
, delete
...
Questo è il motivo per cui per me non sembra giusto nominare un metodo plusDays
anziché sumDays
, minusDays
anziché subtractDays
. Sono solo io a trovarlo molto fastidioso? Cosa pensi?
L'unica ragione a cui riesco a pensare è che le date sono oggetti immutabili, quindi chiamando plusDays
non si aggiungono giorni all'oggetto originale ma si crea uno nuovo con nuove proprietà, ma è molto sottile.
sqrt
è solo una parola che i programmatori dovrebbero riconoscere e conoscere. A proposito, la parola inglese è "radice quadrata". Ma nominare le cose secondo ciò che è naturale in inglese non è buono. Prendi la parola "illecita", ad esempio, una parola inglese perfettamente perfetta. Tuttavia, se qualcuno chiamasse il suo metodo, dire isIllicit
che penso che vorrei strapparmi gli occhi ogni volta che guardavo questa chiamata del metodo. Sembra orribile e ci deve essere un modo migliore per esprimere l'idea.
sum
sembra sbagliato in questo contesto. Preferisco .net's AddDays
.
Math.addExact(1, 2)
perché dici "aggiungi 1 e 2". tomorrow.plusDays(2)
perché dici "domani più 2 giorni". Se addExact
fosse stato membro di in Integer
qualche modo lo sarebbe stato 1.plusExact(2)
.
plusDays
di restituire una nuova data x numero di giorni nel futuro, mentre addDays
potrei aspettarmi di mutare l'oggetto originale. Sono solo io, non ho molta familiarità con Java.
sqrt
che accetta la radice quadrata. Denominare questo metodotakeSqrt
potrebbe sembrare sensato in base alla tua regola, ma nominarlo non renderebbe il metodo più leggibile né lo renderebbe più chiaro.