Java SE 8 viene con un nuevo mecanismo de fechas, la introducción LocalDate
, LocalTime
y LocalDateTime
clases para representar instantes de tiempo. Para manipular esos instantes, se dan una serie de métodos: LocalDate.plusDays(...)
, LocalDate.minusDays(...)
y así sucesivamente.
Siempre he pensado que una buena práctica era nombrar métodos después de los verbos que describen su propósito, ya que los métodos son, en realidad, operaciones a ejecutar, algo que realizará una acción. Solo por mencionar, si se tiene en cuenta las clases como StringBuilder
, por ejemplo, los nombres de los métodos son append
, insert
, delete
...
Es por eso que para mí no suena bien nombrar un método en plusDays
lugar de sumDays
, en minusDays
lugar de subtractDays
. ¿Solo a mí me resulta muy molesto? ¿Qué piensas?
La única razón por la que puedo pensar es que las fechas son objetos inmutables, por lo que al llamar plusDays
no agrega días al objeto original, sino que crea uno nuevo con nuevas propiedades, pero eso es muy sutil.
sqrt
es solo una palabra que los programadores deben reconocer y conocer. La palabra inglesa es "raíz cuadrada" por cierto. Pero nombrar las cosas según lo que es natural en inglés no es bueno. Tome la palabra "ilícito", por ejemplo, una palabra inglesa perfectamente buena. Sin embargo, si alguien nombra su método, digamos isIllicit
que creo que me gustaría arrancarme los globos oculares cada vez que mirara esta llamada al método. Simplemente se ve horrible y tiene que haber una mejor manera de expresar la idea.
sum
Suena mal en este contexto. Prefiero .net's AddDays
.
Math.addExact(1, 2)
porque dices "suma 1 y 2". tomorrow.plusDays(2)
porque dices "mañana más 2 días". Si addExact
fuera miembro de Integer
alguna manera lo hubiera sido 1.plusExact(2)
.
plusDays
devolver una nueva fecha x número de días en el futuro, mientras addDays
que podría esperar mutar el objeto original. Sin embargo, solo soy yo, no estoy tan familiarizado con Java.
sqrt
que toma la raíz cuadrada. Nombrar este métodotakeSqrt
puede parecer tener sentido de acuerdo con su regla, pero nombrarlo no hará que el método sea más legible ni lo aclarará.