Уникайте подвійних значень
Ви навмисно вибрали слово, яке має більше одного значення, і це перше рішення - проблема. Є багато слів, які є проблематичними для програмістів. Іншим прикладом може бути phone
. Ви можете phone
когось, або у вас phone
в кишені.
Використовуйте геттери та сетери
Стандартне іменування для більшості об'єктів - це методи отримання / налаштування властивостей.
Battery.Charge // would be a property
Battery.setCharge(value) // would set the property
Battery.getCharge() // would get the property
Властивості - це держави, а не іменники
Думаю, ви помиляєтесь, класифікуючи властивості об'єкта як іменники, а змінні також можна вважати станами. Вони є державами, що відповідають місцевим масштабам їх існування.
Ви можете описати значення, яке вони мають як іменник, але я не впевнений, що це правда у всіх випадках.
В термінології OOP властивості об'єкта описують стан цього об'єкта. У вашому випадку Battery
це об'єкт, і це Charge
стан. Так це буде властивістю об'єкта, але це залежить від контексту того, як він використовується.
Якщо вам потрібно вміти Charge
акумулятор, а також знати, що це за струм Charge
, то у вас є проблема.
Використання області застосування для забезпечення контексту
Контекст - це те, що уточнить, яке значення слова ви маєте на меті або властивість передати. Область застосування встановлює доступність властивості / методу ззовні об'єкта.
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
Методи - дієслова
Ви можете описати метод об’єкта як дієслово, але слово дія краще підходить. У термінології OOP ви виконуєте дії над об'єктами, використовуючи їх методи. Це погана форма для зміни властивості об'єкта поза об'єктом. Переважно називати метод, який виконує необхідні дії, які викликають зміну стану.
Слово Charge
- це дієслово, але це також іменник. При використанні для виклику способу дії стає зрозумілим, що дієслово вживається Battery.Charge(....)
.
Але контекст дуже важливий. Хоча слово Charge()
є дієсловом, воно не настільки значуще, як startCharging()
.
Правильні методи Battery
можуть включати в себе Charging
, Discharging
, setCharge
, getCharge
, hasCharge
, Discharge
і Charged
.
Прості методи з одним словом часто не чітко заявляють про свої дії чітко, але є такі випадки, як open
і close
де потрібно пояснення мало.
Тож насправді немає правильної відповіді щодо того, як назвати ці типи властивостей / методів. За винятком того, що вам потрібно розумно використовувати перераховані вище методи, щоб уникнути плутанини.