Java SE 8 è dotato di un nuovo meccanismo per le date, l'introduzione LocalDate, LocalTimee LocalDateTimele 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 plusDaysanziché sumDays, minusDaysanziché 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 plusDaysnon 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 isIllicitche 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.
sumsembra 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 addExactfosse stato membro di in Integerqualche modo lo sarebbe stato 1.plusExact(2).
plusDaysdi restituire una nuova data x numero di giorni nel futuro, mentre addDayspotrei aspettarmi di mutare l'oggetto originale. Sono solo io, non ho molta familiarità con Java.
sqrtche accetta la radice quadrata. Denominare questo metodotakeSqrtpotrebbe sembrare sensato in base alla tua regola, ma nominarlo non renderebbe il metodo più leggibile né lo renderebbe più chiaro.