给函数或变量起名称
< 返回列表时间: 2020-02-15来源:OSCHINA
【围观】麒麟芯片遭打压成绝版,华为亿元投入又砸向了哪里?>>>
相信在平常编程过程中,给函数或变量起名称是一件令人头痛的事情。如果起的名称不能表达代码表达的逻辑,则别人看此代码会比较难受了。代码首先要给人看,其次才是机器运行。所以给函数或变量命名就非常重要了。 本篇文章主要介绍在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有些类型
热门排行