开发规范真的很重要

最近阿里巴巴的 Java 开发手册出了新版(可直接到 github alibaba-p3c 上获取相关资源哦),我就跟着这个事情说一下我对开发规范的理解吧。

提起开发规范,我印象中最深的就是读研究生期间,带我的大牛师兄
某导对我的要求。
当时是开发一款 B/S 的 3D 渲染引擎,其中 Web 部分由我负责,在大师兄在对我进行 code review 的过程中,对我提出了“严厉”的批评(也一直很感谢他当时的严格要求),原因不是别的,就是我开发的网页中有一部分是文字介绍,里面的标点符号是中英文混用,且代码也不规范,比如缩进不一致、该有的空格没有等等问题。
就是从那个时候起,我对代码规范非常重视。
这对后来自己写毕业论文等等方面也起到了良好的促进作用,因为导师对这块要求也相对严格。

回到代码规范这件事情上,好的代码读起来真的是赏心悦目,当然自己也一直在追求写出好的代码。代码规范中的 code style 只是其中最简单的一种,上述提到的 Java 开发手册也对这部分做出了严格的说明,但实际上能做到的人也不多。按道理,这部分也是最容易做到的一种,因为有模板,直接遵守即可。记得有一部电视剧(叫啥来着?)讲的就是一堆情侣因为纠结到底是用空格还是 tab 键(或者是 Vim 和 Emacs)分手,哈哈这当然是一个笑话。不过在一个 team 里保持统一的代码风格还是有必要的,毕竟你写的代码不是只有你一个人看,在不同的终端,不同的编辑器来讲空格和 tab 可能显示效果都不一样,也就影响了阅读体验。

开发规范真的很重要

(图 1. hackthon 团队合影)

对于代码规范来讲,我也希望通过自己的努力去感染身边的人。比如之前在宜信的 hackthon,我就组队发起了一个叫 “code review advisor” 项目,实现的目的其实也很简单,就是让大家在预先统一的规范下编码,如果有违反规范的,直接以 Comment 形式告诉代码提交者需要修改。

开发规范真的很重要

图 2
.
 
hackthon 项目截图)

后来,我到了大疆,又要求 team 同学严格遵守规范,并且使用了一些技术手段完全规范大家提交的代码,对于违反相应规则的代码直接不让提交和打包,当时其实就是利用了 alibaba 对外开源的工具支持。不得不说,还是很佩服阿里巴巴对社区做的相应贡献的。

现在,我在阿里,发现现实就是规范其实也是一个美好的愿景,因为各种历史等原因,其实大家的代码并没有按照预期的规范去执行和实施。这应该也是普遍的现状吧。就像在其中一次交流会上,孤尽大佬说的那样,美好愿景肯定是需要的,实现她,是需要大家花时间和精力去推进的。

开发规范真的很重要

图 3. 
孤尽大佬签名版开发手册)

上图是在那次交流会上,得到孤尽大佬签名版的开发手册(原谅我没文化,认不出)。下面我就以其中的一个例子来说明一下规范的好处。

public class SimpleDateFormatTest {

public static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


public static void main(String[] args) {

Date now = new Date();

String printedDate = simpleDateFormat.format(now);

System.out.println(printedDate);

for (int i = 0; i < 10; i++) {

new Thread(new Runnable() {

@Override

public void run() {

try {

Date date = simpleDateFormat.parse(printedDate);

System.out.println(simpleDateFormat.format(date));

} catch (ParseException e) {

e.printStackTrace();

}

}

}).start();

}

}

}

上面代码片段就是规范中提到的 SimpleDateFormat
使用场景中一个错误的示例,其实就是一个线程安全的问题,跑上面代码片段,预期输出应该是一个正确的字符串表达(例如 2020-04-25 15:41:34
),实际过程有可能会抛异常(例如 java.lang.NumberFormatException
),也可能会输出一些奇奇怪怪的时间(例如 0015-03-25 15:41:34
),这其实都还好,因为毕竟要么异常了,要么“时间不正常”,最要命的是可能会输出一个正确格式的时间,只不过不是预期的,这种问题就相对很难排查了。

还有比如前面刚跨年的时候各个系统都爆出的时间跨年问题( yyyy
YYYY
的问题),在此手册中其实也都有说明。所以,其实类似的规范多多了解更好。

特别推荐一个分享架构+算法的优质内容,还没关注的小伙伴,可以长按关注一下:

开发规范真的很重要

开发规范真的很重要

长按订阅更多精彩▼

开发规范真的很重要

如有收获,点个在看,诚挚感谢

原文 

http://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247489524&idx=5&sn=cd4a40d9d61dfd49f78301d51c7a21c8

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 开发规范真的很重要

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址