Java代码开发质量规范
一. 为什么需要代码质量规范
1. 代码质量不规范的影响
新手开发
新手在学习和开发过程中,不可避免的会发生一些莫名其妙的问题;
凭习惯编写代码,后续再重构优化代码,重走旧路,延缓了开发能力的提高。
2. 代码不止是运行
无论哪个开发都自认为自己的代码是完美易懂的,不需优化的,认为其他开发者的代码都是有优化
空间,或者需要重构的,或者逻辑有问题。
3. 代码漏洞
实现功能代码过程中,有场景丢失,测试遗漏,导致发布正式环境后有隐患。
4. 性能影响
单个测试运行正常,压力测试就不通过,内存和CPU都增长迅速。
5. 无用、无效代码
不断的迭代后,有部分代码不会用到,代码越来越多,影响应用的构建。
6. 一个方法或者一个类超长。
类或者方法掺杂了其他功能实现,代码长,变成了上帝类,不利于后续的优化扩展复用。
2. 代码质量规范的好处
新手开发快速成长
俗话说三岁定八十,坏习惯很容易养成,以后就积习难改;好习惯就需要持之以恒才可以形成。
功能实现大家都会,但是如何高效、高扩展的实现就需要高质量的代码。坚持高质量的代码,对以 后的工作受益匪浅。
2. 利于开发的能力提高;
3. 利于后续代码的扩展和维护;
4. 利于应用的高可用;
5. 利于降低代码的成本;
6. 利于提高开发效率。
二. 有哪些代码质量规范的工具
SonarLint
SonarLint 是一个免费的开源IDE 扩展,可识别并帮助您在编写代码时解决质量和安全问题。像拼写检查器一样,SonarLint 会显示缺陷并提供实时反馈和清晰的修复指导,以便从一开始就提供干净的代码。Sonar从一个质量数据报告工具,转变成为的代码质量管理平台,主要特点如下:
代码覆盖:通过单元测试,将会显示哪行代码被选中;
改善编码规则;
搜寻编码规则:按照名字,插件,激活级别和类别进行查询;
项目搜寻:按照项目的名字进行查询;
对比数据:比较同一张表中的任何测量的趋势。
2. Alibaba Java Coding Guidelines
阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描)。专注于Java代码规范,而且默认采用中文。
插件提供地址:https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines
插件在扫描代码后,将不符合规约的代码按Blocker/Critical/Major三个等级显示在下方,甚至在IDEA上,还基于Inspection机制提供了实时检测功能,编写代码的同时也能快速发现问题所在。对于历史代码,部分规则实现了批量一键修复的功能,提升代码质量,提高团队研发效能,是很有必要的。
三. 代码质量规范工具的使用
我们以IDEA开发工具为例。
SonarLint
1.1 安装
安装路径:打开Preferences>>左边的plugins>>右边选择Marketplace>>输入框中输入sonar,回车开始搜索。
点击左边的 Install 按钮,开始安装,等安装后,需要重启IDEA。
安装成功后,plugins的Installed页面中左边就有插件。
1.2 使用
可以选择某个类、某个包、某个应用,右键点击,选择SonarLint。
1.3 检测结果
扫描代码的结果有5个等级:阻断(Blocker)>>严重(Critical)>>主要(Major)>>次要(Minor)>>提示(Info)
阻断和漏洞是必须整改,其他的优先级不高,但也需要消灭的。
这个是提示switch中的某个case少了break。学习开发过程中,switch中每个case都需要break,如果2个case的处理逻辑是一样的,就将2个case紧接着写即可。
2. Alibaba Java Coding Guidelines
2.1 安装
安装路径:打开Preferences>>左边的plugins>>右边选择Marketplace>>输入框中输入alibaba,回车开始搜索。
重启IDEA,安装成功。
右键点击文件或者包名或者应用名称,可以看到编码规约扫描。
四. 总结
我们在前期开发过程中,当某个任务开发完成,虽然代码量少,也可以运行代码质量检查工具,对代码进行检测,避免上线后再修改,降低维护成本。另外在后续的开发中,形成良好习惯,可以提高代码的质量规范。对每个扫描结果,都有整改建议和例子。高质量、高性能的代码,可以获得同事、上司的青睐。
相关推荐HOT
更多>>xml解析器
SAX解析器:基于事件驱动的解析器,逐行读取XML文件并触发相应的事件,适用于处理大型XML文件,但需要手动编写事件处理器来处理XML文件中的数据...详情>>
2023-03-21 16:03:51java全局变量
如果全局变量是一个对象,则可以更改该对象的状态,即使变量本身是final类型。当一个方法被调用时,会为该方法在栈上分配一块内存空间,用于存...详情>>
2023-03-17 10:01:40带你手把手解决Java常见Bug
刚开始学习Java语言的小伙伴, 很可能被各种各样的程序bug搞得焦头烂额, 甚至被劝退。别怕,小编将手把手带你了解Java中的异常体系, 如何识别Bug...详情>>
2023-03-13 16:05:00JavaScript 内的 this 指向
在 javascript 语言中, 有一个奇奇怪怪的 "关键字" 叫做 this详情>>
2023-03-07 15:21:00