一、前言
好的代码一定是整洁的,并且能够帮助阅读的人快速理解和定位。
好的代码可以加快应用的开发迭代速度,不必花过多的时间来修复 bug 和完善代码。
好的代码不但能够使得新的项目成员更容易加入项目,同时方便项目组成员快速做好 Back up。
好的代码便于促进团队间交流合作提升开发效率。
1、代码质量评价标准
有编码经验的人对代码都有一定的“鉴赏力”,能够凭感觉给出代码好坏的主观评价。但是这种凭感觉的方式太过个性随意,所谓仁者见仁智者见智,很难达成共识,那有没有一种公认的标准来鉴定代码质量呢?
答案是有的。
这里简单分享当下较常用的评价标准,其中包括:编码规范、可读性、可维护性、重复度及可测试性。
01、编码规范
主要包含是否遵守了最佳实践和团队编码规范,是否包含可能出问题的代码,以及可能存在安全的漏洞。
编码规范有助于提高团队内协助的效率以及代码的可维护性。
02、可读性
Code Review 是一个很好的测验代码可读性的手段。
如果你的同事可以轻松地读懂你写的代码,那说明你的代码可读性很好;反之则说明你的代码可读性有待提高了。
遵守编码规范也能让我们写出可读性更好的代码。
03、可维护性
代码的可维护性是由很多因素协同作用的结果。
代码的可读性好、简洁、可扩展性好,就会使得代码易维护;更细化地讲,如果代码分层清晰、模块化好、高内聚低耦合、遵从基于接口而非实现编程的设计原则等等,那就可能意味着代码易维护。
除此之外,代码的易维护性还跟项目代码量的多少、业务的复杂程度、利用到的技术的复杂程度、文档是否全面等诸多因素有关。
04、重复度
遵守 Don’t Repeat Yourself 原则,尽量减少重复代码的编写,复用已有的代码。
对项目定期进行代码重复度检测是一个很有意义的事,可以帮助开发人员发现冗余代码,进行代码抽象和重构。
重复的代码一旦出错,意味着加倍的工作量和持续的不可控。如果代码中有大量的重复代码,就要考虑将重复的代码提取出来,封装成公共的方法或者组件。
05、可测试性
代码可测试性的好坏,同样可以反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能说明代码设计得有问题。
除此之外还有很多代码质量评价标准。我们需要一些取舍,选取部分大家有共识的规则定义团队好的代码标准。
代码质量对于软件开发和维护都是非常重要的,高质量的代码通常更容易理解和维护,因为它们更具有结构性和组织性,当代码质量提高时,维护和修改代码的成本就会降低,同时可以提升开发效率。
2、开发中的bug
在开发生涯中,免不了要和bug打交道,甚至有些开发人被Bug虐的苦不堪言。
当有人指出开发人的代码有bug时,他的回答是这样的:
-
不可能啊,在我电脑上运行没有问题呀!
-
你不懂代码,可别乱说!
-
昨天还好好的,一定是有人改了我的代码!
-
重启下电脑试试!
bug 往往无法避免,如何正确的处理 bug,是成为优秀开发工程师的必备技能。
开发是一份很有挑战性的工作,没有人能做到完美,写错代码也是常有的事。
所以我把我的经验总结下来,希望可以跟大家分享我处理 bug 的经验,以及怎样才能少出 bug。
二、常用方法
1、注重代码规范
采用良好的编程习惯,例如使用有意义的变量名、避免魔法数值、避免使用全局变量等。这些习惯可以让你更容易理解代码,从而减少错误。可以参考阿里巴巴的Java开发代码规范。
2、注重代码审查
代码审查,也叫Code review。代码审查就是对软件代码进行仔细检查和评估的过程,以发现潜在的问题、错误、安全漏洞以及其他缺陷。代码审查的目的是提高代码的质量和可靠性,并确保代码符合编程规范、最佳实践和安全标准。
在一个团队中,如果有新成员加入、或者经验不足的成员,都是重点需要关注的,对于他们的代码一定要重点关注,是否符合团队指定的编程规范,对于重要的、核心的功能,也是要重点关注。
3、编写单元测试
编写单元测试可以确保你修改的代码,能否按照你的预期执行,从而减少Bug,并且可以配合自动化测试工具来自动检查团队的修改代码质量,比如通过Jenkins每天自动执行单元测试。
4、用好代码版本控制工具
版本控制工具也是非常重要的,不仅仅是可以帮助团队更好的协作开发,并且可以跟踪代码的更改,可以通过代码更不的对比,快速的发现和解决问题,另外强制提交代码,写好代码注释说明也是非常有帮助的。
常用的代码版本控制工具有:Git、Svn。
5、避免重复代码
在实际项目开发中,很多功能是类似,就会存在大量的相同的代码,可以考虑将其封装成函数或类。这样可以避免代码重复,并减少Bug。
6、使用静态代码分析工具
静态代码分析工具可以帮助你发现潜在的问题和Bug,例如未使用的变量、潜在的内存泄漏、过期的使用方法等。
这些工具可以自动扫描代码,并为你提供建议和警告。
推荐一款IDEA的插件:SonarLint,能动态的帮你检查代码漏洞,像NPE这种代码风险都会给于相应的提示。
SonarLint还有一个大名鼎鼎的服务端叫SonarQube(代码质量扫描工具)。
SonarQube
是一种自动代码审查工具,可以检测出重复代码、代码漏洞、代码规范和安全性漏洞的
问题。
7、进行集成测试
在上面提到单元测试,可以保证很多单元性的代码质量,但还是需要进行集成测试,进行整体功能
的完整测试。
集成测试可以帮助你确保不同的代码模块能够正确地协同工作。
同样的可以使用自动化测试工具来编写和运行集成测试。
8、持续进行代码维护
随着业务的发展,很多设计就会慢慢不能适应未来需求的发展,这时候就需要定期进行重构。
定期进行代码重构可以帮助你发现和修复潜在的问题,重构内容包括定期审查代码、更新文档、修
复漏洞等。
以上的方法都是可以帮助项目,提高代码质量从而减少Bug的。但是,最重要的是团队要保持谨慎
和持续改进的心态,团队通过不断学习和实践,根据业务发展不断重构代码。