Evita los significados dobles
Ha seleccionado deliberadamente una palabra que tiene más de un significado, y esa primera decisión es el problema. Hay un montón de palabras que son problemáticas para los programadores. Otro ejemplo sería phone
. Puede phone
alguien, o podría tener phone
en su bolsillo.
Usar Getters y Setters
La denominación estándar para la mayoría de los objetos son los métodos de obtención / configuración de las propiedades.
Battery.Charge // would be a property
Battery.setCharge(value) // would set the property
Battery.getCharge() // would get the property
Las propiedades son estados, no son nombres
Creo que te equivocas al clasificar las propiedades de los objetos como sustantivos, y las variables también podrían pensarse en estados. Son estados relevantes al alcance local de su existencia.
Podría describir el valor que tienen como sustantivo, pero no estoy seguro de que eso sea cierto en todos los casos.
En la terminología de la POO, las propiedades del objeto describen el estado de ese objeto. En su caso, el Battery
es un objeto, y el Charge
es un estado. Entonces, eso sería una propiedad del objeto, pero esto depende del contexto de cómo se usa.
Si necesita poder Charge
la batería, y también saber qué es Charge
actual, entonces tiene un problema.
Usando el alcance para imponer el contexto
Contexto es lo que aclarará qué significado de una palabra quiere transmitir a un método o propiedad. El alcance es establecer la accesibilidad de una propiedad / método desde fuera del objeto.
Batter._charge // a hidden private property
Battery.setCharge(value) // would set the private property
Battery.getCharge() // would get the private property
Battery.Charge() // would perform the Charge action
Los métodos son verbos
Puede describir el método de un objeto como un verbo, pero la palabra acción es más adecuada. En la terminología OOP, realiza acciones sobre objetos utilizando sus métodos. Es una mala forma modificar la propiedad de un objeto desde fuera del objeto. Es preferible llamar a un método que realice las acciones necesarias que hacen que cambie su estado.
La palabra Charge
es un verbo, pero también es un sustantivo. Cuando se usa para llamar al método de una acción, queda claro que el verbo se usa Battery.Charge(....)
.
Pero, el contexto es muy importante. Si bien la palabra Charge()
es un verbo, no es tan significativa como startCharging()
.
Los métodos válidos para Battery
podrían incluir Charging
, Discharging
, setCharge
, getCharge
, hasCharge
, Discharge
y Charged
.
Los métodos simples de una palabra a menudo no expresan explícitamente sus acciones, pero hay algunos casos como open
y close
donde se requieren pocas explicaciones.
Entonces, realmente no hay una respuesta correcta sobre cómo nombrar estos tipos de propiedades / métodos. Excepto que debe usar las técnicas anteriores con prudencia para asegurarse de que no haya confusión.