sigue que programación practicas por para notación normas nomenclatura nombres nombrado métodos metodos lenguaje definición convención constantes codificación clases buenas atributos java methods naming-conventions

que - normas de codificación java



Convenciones de nombres para los métodos de Java que devuelven booleano(sin signo de interrogación) (6)

Me gusta usar el signo de interrogación al final de los nombres de método / función en otros idiomas. Java no me deja hacer esto. Como solución, ¿de qué otra manera puedo nombrar los métodos booleanos que regresan en Java? Usar un is , has , should , can al frente de un método suena bien para algunos casos. ¿Hay una mejor manera de nombrar esos métodos?

Por ejemplo, createFreshSnapshot?


Estándar es el uso ''es'' o ''tiene'' como un prefijo. Por ejemplo isValid , hasChildren .


La convención es hacer una pregunta en el nombre.

Aquí hay algunos ejemplos que se pueden encontrar en el JDK:

isEmpty() hasChildren()

De esa forma, los nombres se leen como si tuvieran un signo de interrogación al final.

¿La colección está vacía?
¿Este nodo tiene hijos?

Y, entonces, true significa sí, y false significa no.

O bien, podrías leerlo como una afirmación:

La colección está vacía.
El nodo tiene hijos

Nota:
A veces puede querer nombrar un método algo así como createFreshSnapshot? . Sin el signo de interrogación, el nombre implica que el método debe crear una instantánea, en lugar de verificar si es necesario.

En este caso, debes reconsiderar lo que realmente estás preguntando. Algo como isSnapshotExpired es un nombre mucho mejor y transmite lo que el método le dirá cuando se lo llame. Seguir un patrón como este también puede ayudar a mantener más funciones puras y sin efectos secundarios.

Si realiza una búsqueda de Google para isEmpty() en la API de Java, obtendrá muchos resultados.


Para los métodos que pueden fallar, es decir, especifique booleano como tipo de retorno, usaría el prefijo try :

if (tryCreateFreshSnapshot()) { // ... }

Para todos los demás casos, use prefijos como is.. has.. was.. can.. allows.. ..


Quiero publicar este enlace, ya que puede ayudar aún más para que los píos revisen esta respuesta y busquen más convenciones de estilo java

Directrices de estilo de programación de Java

El ítem 14 es específicamente relevante y sugiere el prefijo is .

La guía de estilo continúa sugiriendo:

Hay algunas alternativas al prefijo es que se ajusta mejor en algunas situaciones. Estos son prefijos has , can y should :

boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;

Si sigues las Pautas, creo que se nombrará el método apropiado:

shouldCreateFreshSnapshot()


Si desea que su clase sea compatible con la especificación de Java Beans , para que las herramientas que utilizan la reflexión (por ejemplo, JavaBuilders , JGoodies Binding ) puedan reconocer los getole booleanos, use getXXXX() o isXXXX() como nombre de método. De la especificación Java Beans:

8.3.2 Propiedades booleanas

Además, para propiedades booleanas, permitimos que un método getter coincida con el patrón:

public boolean is < PropertyName > () ;

Se puede proporcionar este método "is < PropertyName >" en lugar de un método "get < PropertyName >", o se puede proporcionar además del método "get < PropertyName >". En cualquier caso, si el método "is < PropertyName >" está presente para una propiedad booleana, entonces usaremos el método "is < PropertyName >" para leer el valor de la propiedad. Un ejemplo de propiedad booleana podría ser:

public boolean isMarsupial(); public void setMarsupial(boolean m);


is el que me he encontrado más que cualquier otro. Sin embargo, lo que tiene sentido en la situación actual es la mejor opción.