Evite Significados Duplos
Você selecionou deliberadamente uma palavra com mais de um significado e essa primeira decisão é o problema. Há uma tonelada de palavras que são problemáticas para os programadores. Outro exemplo seria phone
. Você pode phone
alguém, ou você pode ter um phone
no seu bolso.
Use Getters e Setters
A nomenclatura padrão para a maioria dos objetos é o método getters / settings para propriedades.
Battery.Charge // would be a property
Battery.setCharge(value) // would set the property
Battery.getCharge() // would get the property
Propriedades são estados não substantivos
Acho que você está enganado ao classificar as propriedades do objeto como substantivos e as variáveis também podem ser consideradas estados. São estados relevantes para o escopo local de sua existência.
Você poderia descrever o valor que eles têm como substantivo, mas não tenho certeza se isso é verdade em todos os casos.
Nas propriedades do objeto de terminologia OOP descrevem o estado desse objeto. No seu caso, o Battery
é um objeto, e é Charge
é um estado. Então, isso seria uma propriedade do objeto, mas isso depende do contexto de como é usado.
Se você precisa ser capaz de Charge
da bateria e também saber qual é a% atual deCharge
, então você tem um problema.
Usando o escopo para reforçar o contexto
Contexto é o que irá esclarecer qual o significado de uma palavra que você pretende que um método ou propriedade transmita. O escopo está definindo a acessibilidade de uma propriedade / método de fora do 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
Métodos são verbos
Você pode descrever o método de um objeto como um verbo, mas a ação da palavra é mais adequada. Na terminologia OOP, você executa ações sobre objetos usando seus métodos. É uma má forma modificar a propriedade de um objeto de fora do objeto. É preferível chamar um método que execute as ações necessárias para alterar o estado.
A palavra Charge
é um verbo, mas também é um substantivo. Quando usado para chamar o método de uma ação, fica claro que o verbo está sendo usado Battery.Charge(....)
.
Mas o contexto é muito importante. Embora a palavra Charge()
seja um verbo, ela não é tão significativa quanto startCharging()
.
Os métodos válidos para Battery
podem incluir Charging
, Discharging
, setCharge
, getCharge
, hasCharge
, Discharge
e Charged
.
Métodos simples de uma palavra geralmente não explicitam claramente suas ações, mas há alguns casos como open
e close
em que é necessária pouca explicação.
Portanto, não há realmente uma resposta correta sobre como nomear esses tipos de propriedades / métodos. Exceto que você precisa usar as técnicas acima com sabedoria para garantir que não haja confusão.