关于java的函数命名
最近在看java的集合。发现一个问题。在java里一般“动词”都是加s的,比如extends,implementes,这符合英语第三人称动词加s的规范。Collection接口中提供的几个方法:add(),remove()等是没有加s的,但是contains()却又加了s。我有点搞不懂了,难道这个s是随便加的,当时编写API的时候,就连命名都不统一?求解!
------解决方案--------------------你的好奇心还挺好的来,没有考虑过这个问题···如果这样的话,contains还应该命名成isContains()比较合适的
------解决方案--------------------那API也是由很多人一起开发的啊,不可能每个人的命名习惯都相同,即使有规范,也不能定得那么细啊,所以肯定会有差别的.
------解决方案--------------------有一些加s是表示为工具类,里面有很多可以直接使用的方法。如Collections里面就提供了对集合的操作方法,使用很方便。
------解决方案--------------------
isXxx()一般是是否的意思,是否有效,是否激活,是否存在···
------解决方案--------------------contains()函数返回的是状态,性质类似于isXXX()这样的,英语A contains B表达的就是A包含B的状态
add(),remove()不一样,它们指示对象去完成动作,是一种祈使句
你仔细感受下,是不是这样
------解决方案--------------------加s表示是别人定义的,不加s表示是自己主动发出的。
比如
public void test() throws
IOException{
...
...
throw new Exception("");
...
}
------解决方案--------------------1:带有判断含义的方法动词,都使用第三人称单数,或者是第三人称单数形式的动界、动宾短语,常见的有 equals, contains, exists, matches, startsWith, endsWith, containsAll 等等
2:数据类型转换方法,一般为“to + 类型”,比如 toString 等等
3:对于普通的方法,一般采用动词原形,后面可以跟名词,也可不跟,比如 add, put, set, get, parse, parseInt, 等等。