Evite significados duplos
Você selecionou deliberadamente uma palavra que tem mais de um significado e essa primeira decisão é o problema. Há muitas palavras 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 nomeação padrão para a maioria dos objetos são os métodos 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
Eu acho que você está enganado ao classificar propriedades de objetos como substantivos, e variáveis também podem ser pensadas em estados. São estados relevantes para o escopo local de sua existência.
Você pode descrever o valor que eles possuem como substantivo, mas não tenho certeza se isso é verdade em todos os casos.
Na terminologia OOP, as propriedades do objeto descrevem o estado desse objeto. No seu caso, Battery
é um objeto e Charge
é um estado. Portanto, isso seria uma propriedade do objeto, mas isso depende do contexto de como ele é usado.
Se você precisa ser capaz de Charge
carregar a bateria e também saber o que é atual Charge
, então você tem um problema.
Usando o escopo para aplicar o contexto
Contexto é o que esclarecerá qual significado de uma palavra você pretende que um método ou propriedade transmita. O escopo é definir 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 palavra ação é mais adequada. Na terminologia OOP, você executa ações em 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 que fazem com que seu estado mude.
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, não é tão significativa quanto startCharging()
.
Os métodos válidos para Battery
poderiam incluir Charging
, Discharging
, setCharge
, getCharge
, hasCharge
, Discharge
e Charged
.
Métodos simples de uma palavra geralmente não explicitam claramente suas ações, mas existem alguns casos como open
e close
onde pouca explicação é necessária.
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.