为什么需要代码规约

编码规约能做什么?

  • 代码规约能够保证代码风格的一致性:
    因为在软件的整个生命周期中,软件的作者往往不是同一个人。如果大家都遵守这个规范,每个人的代码风格就会保持一致。
  • 代码规约能够提升代码的可读性:
    如果做到了代码风格的一致性,那么看到别人写的代码就和自己写的没有什么差距,这样就可以使程序员很快上手,很好的理解软件。
  • 代码规约能够降低软件的维护成本:
    大家知道软件的整个生命周期中,大概有80%的时间都是用来维护软件。如果都遵守这个代码规约,代码风格就会保持一致,代码的可读性就会提升,
    维护时间自然就会缩短。

如何做到编码规范

  • 传统的方式:编码规范文档。
    所有开发人员都要学习编码规范文档,并且需要按照文档的规范去编写代码。
    这就会产生一系列的问题:
    1学习成本高。写代码还要先学习文档。
    2开发效率低。一边敲代码一遍去看规范文档。看看包的命名是否符合规范。
    3并不是每个开发人员都会严格按照规范的要求来编写代码。是不是
    这就导致代码规范并没有真正执行起来。开发人员还是按照自己的方式去敲代码。

  • S71的方式:IDE插件
    不管是eclipse,还是idea,只要安装S71的插件,就能在编码的过程中,由S71自动的侦测代码中的不规范的地方。
    若发现存在不规范不合理的地方,就会在控制台展示出来,并给出提示和建议。
    比如说:包名没有以com.jd开头,if判断后面没有大括号,类和方法没有写注释。

  • 区别:
    规范文档采用的是主动策略,规范执行的成败完全取决于开发人员的主动性。
    S71采用的是被动策略,开发人员是被动的,必须按照代码规范来编写代码。
    这种由主动到被动的转变就是S71所做的工作。

S71架构

S71是采用以pmd为底层服务支持,并加入自定义规约组成的IDE插件。

主要分为两层:
应用层:eclipse插件,idea插件
核心服务层:核心服务层又有:pmd底层服务和大客代码规约组成。
pmd(sourceforge社区的一个产品): 是一个开源的代码分析器。可以查找一些常见的编程缺陷。 目前支持java,javascript,c++,python,swift,scala等编程语言。
pmd主要是将java源代码解析成抽象语法树。通过对语法树进行分析就可以定位到代码中的问题。比如:没有注释,kc-code-rule:根据pmd提供的语法树,去创建符合自己编码的规则。
比如说:创建包名必须以com.jd开头的规则, 在语法树中找到与包名相关的语法,然后对包名进行分析处理即可。根据规约的不同,制定了不同的规则级别。如:

1,Blocker 编译错误 包名没有以com.jd开头
2,Critical 警告 常量命名没有大写。
3,Major 提醒 类和方法没有添加注释

在这里插入图片描述

整个核心服务层支持了eclipse插件和idea插件。 将来如果有更多的IDE,都可以基于核心服务层进行开发。