避免双重含义
您故意选择了一个词,该词的含义不止一个,而第一个决定就是问题。对于程序员来说,有很多单词是有问题的。另一个例子是phone
。您可以phone
有人,也可以phone
在口袋里放一个。
使用getter和setter
大多数对象的标准命名是属性的吸气剂/设置方法。
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
在需要一点解释。
因此,如何命名这些类型的属性/方法并没有真正正确的答案。除了需要明智地使用上述技术以确保没有混乱之外。