Para un campo booleano, ¿cuál es la convención de nomenclatura para su getter / setter?


Eg.

boolean isCurrent = false;

¿Cómo se llama su captador y setter?

Author: Tom Cammann, 2011-03-16

9 answers

Supongamos que tienes

boolean active;

El método de acceso sería

public boolean isActive(){return this.active;}

public void setActive(boolean active){this.active = active;}

Véase También

 181
Author: Jigar Joshi,
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-10-10 14:29:20

Http://geosoft.no/development/javastyle.html#Specific

  1. se debe usar el prefijo is para las variables y métodos booleanos.

    Iset, IsVisible, isFinished, isFound, isOpen

    Esta es la convención de nomenclatura para métodos booleanos y variables utilizadas por Sun para los paquetes Java core. Usando el prefijo is resuelve un común problema de elegir nombres booleanos malos como estado o bandera. isStatus o isFlag simply no encaja, y el programador se ve obligado a elegir más nombres significativos.

Métodos Setter para variables booleanas debe haber establecido el prefijo como en:

Void setFound(booleano isFound); Hay algunas alternativas a la is prefijo que encaja mejor en algunos situación. Estos son has, can y prefijos should:

HasLicense booleano(); canEvaluate booleano(); boolean shouldAbort = false;

 57
Author: Narayan,
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
2017-10-30 23:15:39

Para un campo llamado isCurrent, el nombre correcto de getter / setter es setCurrent() / isCurrent() (al menos eso es lo que piensa Eclipse), que es muy confuso y se puede remontar al problema principal:

Su campo no debe ser llamado isCurrent en primer lugar. Is es un verbo y los verbos son inapropiados para representar el estado de un Objeto. Use un adjetivo en su lugar, y de repente sus nombres getter / setter tendrán más sentido:

private boolean current;

public boolean isCurrent(){
    return current;
}

public void setCurrent(final boolean current){
    this.current = current;
}
 48
Author: Sean Patrick Floyd,
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
2011-03-16 08:35:27

Yo creo que sería:

void setCurrent(boolean current)
boolean isCurrent()
 4
Author: miku,
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
2011-03-16 08:29:30

Tal vez es hora de empezar a revisar esta respuesta? Personalmente votaría por setActive() y unsetActive() (las alternativas pueden ser setUnActive(), notActive(), disable(), etc. dependiendo del contexto) ya que "setActive" implica que lo activas en todo momento, lo cual no lo haces. Es una especie de contra intuitivo decir "setActive" pero en realidad eliminar el estado activo.

Otro problema es que no puede escuchar específicamente un evento setActive de una manera CQRS, tendría que escuchar un 'setActiveEvent' y determinar dentro de ese oyente, ya sea que se haya activado o no. O, por supuesto, determinar a qué evento llamar al llamar setActive(), pero eso va en contra del principio de Separación de Preocupaciones.

Una buena lectura sobre esto es el artículo FlagArgument de Martin Fowler: http://martinfowler.com/bliki/FlagArgument.html

Sin embargo, vengo de un entorno PHP y veo que esta tendencia se está adoptando cada vez más. No estoy seguro de cuánto esto vive con el desarrollo de Java.

 2
Author: Christian Vermeulen,
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
2016-11-08 11:16:41
private boolean current;

public void setCurrent(boolean current){
    this.current=current;
}

public boolean hasCurrent(){
    return this.current;
}
 0
Author: Mkne,
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-02-01 01:13:17

Como setter, ¿qué tal:

// setter
public void beCurrent(boolean X) {
    this.isCurrent = X;
}

O

// setter
public void makeCurrent(boolean X) {
    this.isCurrent = X;
}

No estoy seguro de si estos nombres tienen sentido para los hablantes nativos de inglés.

 0
Author: amekusa,
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-08-16 08:15:38
Setter: public void setCurrent(boolean val)
Getter: public boolean getCurrent()

Para los booleanos también puedes usar

public boolean isCurrent()
 -4
Author: Suraj Chandran,
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
2013-09-11 18:04:08

Solo para evitar confusiones; recomiendo usar

// Setter method for isCurrent

public void setIsCurrent(boolean isCurrent) {
    this.isCurrent = isCurrent;
}

// Getter method for isCurrent

public boolean getIsCurrent() {
    return isCurrent;
}
 -8
Author: Viraj Pai,
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
2017-01-08 16:46:20