2019年1月9日,阿里巴巴公布了其2018年度代码报告。报告显示,阿里工程师在2018年共写下了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混淆,造成误解。
说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2?
这是常量定义的第2条。从这一点可以看出阿里巴巴对代码可读性的细节扣的很严格。代码只需编写一次,而会被查看无数次,所以要力争在第一次编写的时候尽可能少的引入歧义。
3
【强制】大括号的使用约定
如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有 else 等代码则不换行;表示终止右大括号后必须换行。
格式规约的第1条终于终结了括号之争。这一条需要强制遵守,那么左大括号换行一派则被彻底排除在阿里巴巴之外。
有人说不推荐左大括号换行,可以减少行数,增加单个屏幕可以显示的代码行数。
而有的人反驳说现在屏幕已经足够大,不换行则破坏了对称之美。
其实两种格式都有各自的好处,只要团队能够坚持使用其中之一即可。
4
【强制】缩进时使用约定
缩进市采用 4 个空格,禁止使用 tab 字符。
说明:如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时,请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。
正例: (涉及 1-5 点)
使用空格代替tab字符进行缩进已经成为了编程界的共识。
其主要原因是不同的平台甚至不同的编辑器下tab字符的长短是不一样的。
不过Google在其《java style guide》中规定缩进为2个空格,而阿里巴巴约定为4个空格。
由于4个空格的缩进比2个空格的缩进长一倍,所以如果在代码嵌套过深的情况下可能会很快超过单行最多字符数(阿里巴巴规定为120个)的限制。
不过这个问题可以从另一个方面进行思考,如果由于缩进的原因导致单行字符数超标,这很可能是代码设计上有坏味道而导致嵌套过深,所以最好从调整代码结构的方面下手。
5
【强制】单行字符数换行时约定
单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:
1) 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
2) 运算符与下文一起换行。
3) 方法调用的点符号与下文一起换行。
4) 在多个参数超长,逗号后进行换行。
5) 在括号前不要换行,见反例。
正例:
反例:
关于换行,阿里巴巴则给出了强制性的要求。
关于参数,很多方法调用超过120个字符需要换行,这暴露除了过长参数列的代码坏味道,解决方式之一就是使用重构手法的Replace Parameter With Method的方式把一次方法调用化为多次方法调用,或者使用Introduce Parameter Object手法创造出参数对象并进行传递。
留言与评论(共有 0 条评论) |