Coding style 函数名中的单数动词还是复数动词?

Coding style 函数名中的单数动词还是复数动词?,coding-style,naming-conventions,Coding Style,Naming Conventions,以Java标准库为例,Object.equals为什么不称为Object.equal?为什么Object.clone使用单数from,而不是Object.clone 为什么我看到几乎所有人在读取和设置对象属性时都使用getXXX和setXXX,而不是get或set?这些方法名称是动词,而不是名词equals是动词“equal”的第三人称形式(可能是疑问形式——在方法名称中支持非字母数字字符的语言中,它通常被称为equals?),而clone是动词“clone”的第二人称命令式形式(您正在排序对象

以Java标准库为例,
Object.equals
为什么不称为Object.equal?为什么
Object.clone
使用单数from,而不是Object.clone


为什么我看到几乎所有人在读取和设置对象属性时都使用
getXXX
setXXX
,而不是get或set?

这些方法名称是动词,而不是名词
equals
是动词“equal”的第三人称形式(可能是疑问形式——在方法名称中支持非字母数字字符的语言中,它通常被称为
equals?
),而
clone
是动词“clone”的第二人称命令式形式(您正在排序对象:“clone yourself!”)

通常,对于查询与另一个对象状态相关的对象状态信息的方法(
等于
包含
hasXXX
…),使用疑问动词;对于“操作”方法,使用命令动词(要求对象执行某些任务的方法,例如,
克隆
添加
显示
…这些方法通常不返回任何内容),以及查询对象状态信息而不引用任何外部内容的方法的名词(例如,
长度
intValue
)。请注意,这些名词可以是单数也可以是复数,具体取决于方法返回的内容:单数表示只能是单数的内容(
length
),复数表示可以返回列表/映射/其他容器的内容(
keys

getter是一种特殊情况,使用动作动词(get)将这些方法“标记”为getter,并与使用set的setter对称

还可以说,GETSt/Stter是C++和java中缺少属性的一种解决方法。在没有这种弱点的语言中,它们不存在:使用属性代替,而这些属性是名词。你所学的单词形式不正确吗?但这不是教英语的好地方,我也不是应该教英语的人。