年1月9日,阿里巴巴公布了其年度代码报告。报告显示,阿里工程师在年共写下了12亿行代码,总代码长度可绕地球4.49圈。
代码是IT行业的根基和基础。
从报告中我们不难看出,Java语言以42.51%的人数占比占据阿里巴巴开发语言榜首,而同时阿里巴巴的Java开发规约也成业界标准。
该开发规约手册以Java开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、工程结构、MySQL数据库六个维度,再根据内容特征,细分成若干二级子目录。根据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。
对于程序员来说,开发规约中的每一条都值得了解。今天,媛妹就简单评述下其中的几条。
1
各层命名规约
A)Service/DAO层方法命名规约
1)获取单个对象的方法用get做前缀。
2)获取多个对象的方法用list做前缀。
3)获取统计值的方法用count做前缀。
4)插入的方法用save(推荐)或insert做前缀。
5)删除的方法用remove(推荐)或delete做前缀。
6)修改的方法用update做前缀。
B)领域模型命名规约
1)数据对象:xxxDO,xxx即为数据表名。
2)数据传输对象:xxxDTO,xxx为业务领域相关的名称。
3)展示对象:xxxVO,xxx一般为网页名称。
4)POJO是DO/DTO/BO/VO的统称,禁止命名成xxxPOJO。
命名规约的第15条描述了在Service/DAO层对于资源的操作的命名规范。这一条的参考价值极大,如果能遵守这一点,那么我们在操作资源时就会减少一些困扰。
2
long/Long初始赋值时使用约定
必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。
说明:Longa=2l;写的是数字的21,还是Long型的2?
这是常量定义的第2条。从这一点可以看出阿里巴巴对代码可读性的细节扣的很严格。代码只需编写一次,而会被查看无数次,所以要力争在第一次编写的时候尽可能少的引入歧义。
3
大括号的使用约定
如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
1)左大括号前不换行。
2)左大括号后换行。
3)右大括号前换行。
4)右大括号后还有else等代码则不换行;表示终止右大括号后必须换行。
格式规约的第1条终于终结了括号之争。这一条需要强制遵守,那么左大括号换行一派则被彻底排除在阿里巴巴之外。
有人说不推荐左大括号换行,可以减少行数,增加单个屏幕可以显示的代码行数。
而有的人反驳说现在屏幕已经足够大,不换行则破坏了对称之美。
其实两种格式都有各自的好处,只要团队能够坚持使用其中之一即可。
4
缩进时使用约定
缩进市采用4个空格,禁止使用tab字符。
说明:如果使用tab缩进,必须设置1个tab为4个空格。IDEA设置tab为4个空格时,请勿勾选Usetabcharacter;而在eclipse中,必须勾选insertspacesfortabs。
正例:(涉及1-5点)
使用空格代替tab字符进行缩进已经成为了编程界的共识。
其主要原因是不同的平台甚至不同的编辑器下tab字符的长短是不一样的。
不过Google在其《javastyleguide》中规定缩进为2个空格,而阿里巴巴约定为4个空格。
由于4个空格的缩进比2个空格的缩进长一倍,所以如果在代码嵌套过深的情况下可能会很快超过单行最多字符数(阿里巴巴规定为个)的限制。
不过这个问题可以从另一个方面进行思考,如果由于缩进的原因导致单行字符数超标,这很可能是代码设计上有坏味道而导致嵌套过深,所以最好从调整代码结构的方面下手。
5
单行字符数换行时约定
单行字符数限制不超过个,超出需要换行,换行时遵循如下原则:
1)第二行相对第一行缩进4个空格,从第三行开始,不再继续缩进,参考示例。
2)运算符与下文一起换行。
3)方法调用的点符号与下文一起换行。
4)在多个参数超长,逗号后进行换行。
5)在括号前不要换行,见反例。
正例:
反例:
关于换行,阿里巴巴则给出了强制性的要求。
关于参数,很多方法调用超过个字符需要换行,这暴露除了过长参数列的代码坏味道,解决方式之一就是使用重构手法的ReplaceParameterWithMethod的方式把一次方法调用化为多次方法调用,或者使用IntroduceParameterObject手法创造出参数对象并进行传递。
私聊媛妹索取完整版阿里巴巴Java开发手册终极版
识别右侧