Convenciones de nomenclatura para métodos java que devuelven booleano (Sin signo de interrogación)


Me gusta usar el signo de interrogación al final de los nombres de métodos/funciones en otros idiomas. Java no me deja hacer esto. Como solución alternativa, ¿de qué otra manera puedo nombrar métodos de retorno booleanos en Java? Usando un is, has, should, can en la parte delantera de un método de sonido bien para algunos casos. ¿Hay una mejor manera de nombrar tales métodos?

Por ejemplo, createFreshSnapshot?

Author: JJD, 2010-10-06

6 answers

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 manera, 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, se podría leer como una afirmación:

La Colección está vacía.
El nodo tiene niños

Nota:
A veces es posible que desee nombrar un método algo 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 se requiere una.

En este caso usted debe repensar lo que realmente está pidiendo. Algo como isSnapshotExpired es un nombre mucho mejor, y transmite lo que el método le dirá cuando se llama. Seguir un patrón como este también puede ayudar a mantener más de su funciones puras y sin efectos secundarios.

Si haces una búsqueda en Google para isEmpty() en la API de Java, obtienes muchos resultados.

 90
Author: jjnguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-06 20:00:53

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

8.3.2 Propiedades booleanas

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

public boolean isPropertyName>();

Esta es "PropertyName>" método puede ser proporcionada en lugar de un "getPropertyName>" método, o puede ser provisto además de un "getPropertyName>" método. En cualquier caso, si el método" ispropertyName> "está presente para una propiedad booleana, entonces usaremos el método" ispropertyName> " para leer el valor de la propiedad. Un ejemplo de propiedad booleana podría ser:

public boolean isMarsupial();
public void setMarsupial(boolean m);
 26
Author: Jason S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-06 16:02:23

Quiero publicar este enlace, ya que puede ayudar aún más a los peeps que comprueban esta respuesta y buscan más convención de estilo java

Pautas de Estilo de Programación Java

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

La guía de estilo sugiere:

Hay algunas alternativas al prefijo is que se ajusta mejor en algunas situaciones. Estas son las tiene, puede y debería prefijos:

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

Si sigues las Pautas creo que el método apropiado sería nombrado:

shouldCreateFreshSnapshot()
 17
Author: kommradHomer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-12 01:01:04

Para los métodos que pueden fallar, es decir, que 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.. ..

 10
Author: codymanix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-06 16:06:33

Estándar es usar 'is' o 'has' como prefijo. Por ejemplo isValid, hasChildren.

 5
Author: BillThor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-19 17:08:56

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

 2
Author: Skilldrick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-10-06 15:50:41