相信在平常编程过程中,给函数或变量起名称是一件令人头痛的事情。如果起的名称不能表达代码表达的逻辑,则别人看此代码会比较难受了。代码首先要给人看,其次才是机器运行。所以给函数或变量命名就非常重要了。 本篇文章主要介绍在Java(Java web)开发过程中给类,函数等的命名。在给函数或者变量命名是一个首要原则就是要尽力的表达代码想要表达的意思。下面会给出一些具体的建议
给类命名
Java中给类命名要遵循首字母大小,驼峰式命名。类名要表达具体的业务对象。在Web开发过程,经常需要建立VO,DTO,BO,Entity等对象(这些对象的含义可以参考阿里巴巴编程规范,里面有具体的介绍)。在给这些领域对象命名时,最好带上VO,DTO等后缀。
函数命令
在给函数命名时,取一个动词很关键,因为一般函数就是执行一个具体的逻辑。在《代码整洁之道》这本书中,作者告诉我们一个函数最好只做一件事情,不要让函数变得很复杂,如果函数复杂,那么如果想要重构就会变得比较困难。同时函数最好不要对于三个参数。
下面是一些常用的动词以及表达的含义,在平常的编程中可以尽量使用下面这些动词
动词选取
类别 | 单词 |
---|---|
添加/插入/插入/创建/初始化/加载 | add/append/insert/create/initialize/load |
删除/销毁 | delete, remove, destroy, drop |
打开/开始/启动 | open,start |
关闭/停止 | close, stop |
获取、读取、查找、查询 | get,fetch,acquire,read,search,find,query |
设置,重置,放入,写入,释放,刷新 | set,reset,put,write,release,refresh |
发送,推送 | send,push |
接收, 拉取 | receive,pull |
提交,撤销,取消 | submit,cancel |
收集,采集,选取,选择 | collect,pick,select |
提取,解析 | sub,extract, parse |
编码,解码 | encode,decode |
填充,打包,压缩 | fill,pack,compress |
清空,拆包,解压 | flush,clear,unpack,decompress |
增加,减少 | increase,decrease, reduce |
分隔,拼接 | split,join,concat |
过滤,校验,检测 | filter, valid,check |
动词决定了函数的动作,名词描述了函数具体操作的对象,名词的选取也要选择常用的,不要选择生僻的。 比如:capacity表示集合容量,size表示实际元素个数,length表示字符串长度。不要用size描述字符串长度 再比如,建造者模式用build做函数名,不要用create。
名词表 | 类别 | 单词 | | --- | --- | | 容量,大小,长度 | capacity,size,length | | 实例,上下文 | instance,context | | 配置 | config,settings | | 头部,前面,前一个,第一个 | header,front,previous, first | | 尾部,后面,后一个,最后一个 | tail,back,next,last | | 区间,区域,某一部分,范围,规模 | range,interval,region,area,section,scope,scale | | 缓存,缓冲,会话 | cache,buffer,session | | 本地,局部,全局 | local,global | | 成员,元素 | member,element | | 菜单,列表 | menu, list | | 源,目标 | source,destination,target |
处理采用上面的动词以及名词,还有其他一些注意的地方,如下
多条件查询的函数名词谨慎使用介词by
如下命名
public List<String> getByName(String name)
如果某天需要增加一个查询条件,需要增加电话号码的查询条件,则可能此函数命名方式变成
public List<String> getByNameAndMobile(String name, String mobile);
如果以后还要增加查询条件,则会变成噩梦,比较好的方式是将查询条件分装成查询的领域对象,如下:
public List<Student> getStudents(StudentCondition searchParam);
返回布尔值的方法尽量以is或are开头
比如 isButtonEnabled
或areButtonEnable
get使用要合理
get表示获取,似乎有返回值的函数都可以用这个动词。但是get比较适合描述获取某个属性,比如POJO(领域对象)中的get方法。但是如果是其他的,建议采用其他动词。比如从服务器获取用户列表,用fetchUsers
; 获取某个返回的质数,caculatePrime
不要包含函数参数的信息
如用一个 id 和 token 找用户的方法,应该叫findUser(userId, token)
而不是findUserByUserIdAndToken(userId, token)
。 这个跟谨慎使用介词by有些类型
来源:oschina
链接:https://my.oschina.net/u/4421238/blog/3166593