En Java, por convención getter y setter para campos booleanos serán isField()y setField(). Esto funciona perfectamente bien con los nombres de campos que son adjetivos como active, visible, closed, etc.
Pero, ¿cómo nombro un campo que tenga el significado de un verbo, como haveChildren? Agregue "_ing" al verbo ( ), ¿tal vez?havingChildren
Para aclarar, no tengo control de los nombres de los métodos (getter y setter) ya que son generados automáticamente por el IDE. Entonces, lo que necesito es un nombre de campo apropiado para que cuando el IDE genere un captador para él, tenga sentido. Por ejemplo, hasChildrenes un nombre de campo perfecto, pero cuando el IDE genera el captador para el campo, sería isHasChildren. ¿Cómo puedo solucionar esto?

parentfuncionaría.Respuestas:
Respuesta corta:
Respuesta larga:
haveChildren()debe ser nombradohasChildren().Tampoco veo
hasChildren()que sea necesariamente el captador de un miembro de clase booleana. Supongo que tal método descubriría si un miembro de tipoCollectionestá vacío o no .El nombre predeterminado que un IDE da a los captadores y establecedores generados no se supone que sea una ley establecida en piedra.
Otro punto: las interfaces tienen nombres para los métodos aún por implementar.
Si se supone que los nombres de los métodos reflejan la implementación interna, ¿cómo podría alguien diseñar una interfaz? Las interfaces no tienen una implementación ni saben de antemano qué harán los implementadores bajo el capó.
Tomemos por ejemplo la
Iteratorinterfaz en Java.Cuando implementa
Iterator, incluso cuando tiene un miembro booleano llamadonext, no se supone que cambie el nombrehasNext()aisNext()oisHavingNext(). Ese es un detalle de implementación. De hecho, lo he implementadoIteratory lo que hago es tener un miembro del tipo de lo que sea que mi clase tenga una lista, llamadanext(no booleana).hasNext()Luego regresanext!=null.Además, mira esto:
Tenga en cuenta que
isDead()no es getter normal.Tome las herramientas de productividad de IDE por lo que son.
fuente
Sugeriría cambiar el nombre del campo a
parentpara que el getter seaisParenty setter seasetParent.También puede probar
childPresentpara el nombre de la variable yisChildPresent, ysetChildPresentcomo el getter y setter.fuente
parentcampo para contener la referencia al objeto padre. Creo que lo que necesito es una regla general para convertir todos los verbos en adjetivos para campos booleanos.Podrías poner
doesantes del verbo. Tal comodoesHaveChildrenen su ejemplo que proporcionó. O tal vezshouldHaveChildrendependiendo del contexto.fuente
isSomethinges parte de esa especificación y se hacen muchas suposiciones en torno a ella, para bien o para mal, ir en contra de estodoesSomethingpuede romper las cosas de maneras no tan obvias, lo que lleva a errores.La pregunta es perfectamente razonable. A veces, cambiar el nombre del método generado automáticamente no es suficiente. Ejemplo: se espera que los beans gestionados JSF tengan
isXyz()como método getter de unaboolean xyzpropiedad.Estoy de acuerdo con BlackPanther, que sugiere cambiar el nombre del campo
parenty usarloisParentcomo nombre del método. Según el principio de ocultación de información, la legibilidad de los métodos getter y setter es más importante que la del atributo.fuente