潍坊市论坛

首页 » 分类 » 问答 » 阿里巴巴公布年代码报告新增12亿
TUhjnbcbe - 2021/5/24 19:08:00

年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开发手册终极版

识别右侧

1
查看完整版本: 阿里巴巴公布年代码报告新增12亿