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?
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
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
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;
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;
}
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()
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.
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;
}
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.
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()
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;
}
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