代码质量评价

Posted by Shi Hai's Blog on December 28, 2024

什么是代码质量?

我们看代码的时候,经常会说这个代码看起来好或者不太好,实际这是一种笼统的说法,实际里面有很多维度信息要进行详细说明,列如:代码可读性、可靠性等。 当然,在不同的业务场景下代码质量的衡量标准是不一样的。如:在云场景下,用户最关注的是资源创建的速度和应用效率,那除了对软件系统的质量要求外, 那就需要特别关注可靠性和性能;但在医疗场景下,比如给患者进行化疗,医生最先关注的可能是给用户给定进准的药物注入,这时对准确性的重视度会高于可靠性。(随便举个例子说明一下,如果有不严谨的逻辑,请大家忽略。)

代码质量为什么重要?

在说这个话题前,我先插入一个词和一幅画,大家看看能不能找到更好的词语来表达这幅画?
一个词:浮光跃金。
一幅画

我猜想大家大概率找不到比“浮光跃金”更好的词来表达这幅画了。
把这个好词+美景的逻辑投射到代码质量维度,那就是:好的代码能让团队成员干的更轻松开心(看优美和丑陋的代码,我个人感受上确实会有些区别,可能多少会影响到一些工作幸福感)。好的代码也能更好的“压榨”机器资源,我们大概率找不到更好的表达及重构方式。

AWS对代码质量重要性总结挺准确的,直接拷贝放在这里供参考:

  • 高质量的代码可以帮助开发人员重读、构建和重构自己的代码
  • 它可以帮助其他开发人员理解他人的代码以及就他人的代码进行协作
  • 它可以帮助系统架构师或项目负责人检查结构是否符合并协调团队的工作
  • 它可以帮助软件开发中的其他利益相关者(例如安全团队或运营团队)测试、部署和保护代码
    不断累积的经验可以帮助开发人员完善其编码技术和方法,以产生高质量的代码。

衡量代码质量的方式有哪些?

下面这些维度是衡量代码质量比较常用的一些维度,我按我自己理解的优先级来进行划分:

  • 第一优先级:围绕人来定义,所有代码都是需要团队每个成员共同配合才能往前迭代,所以我把可读性放到第一优先级;
  • 第二优先级:围绕业务来定义,需要面对不同业务场景能进行快速迭代且质量有保障,所以我把可扩展可测试可重复性放到第二优先级;
  • 第三优先级:围绕业务属性来定义,不同业务领域对可靠性、性能等有不同的要求,所以放到第三优先级。

可读性

To Be Done.

可扩展

To Be Done.

可测试

To Be Done.

可重复性

To Be Done.

可移植

To Be Done.

可靠性

To Be Done.

性能

To Be Done.

安全性

To Be Done.

怎么才能提高代码质量?

学习常用的设计模式和算法、熟练使用各种检查工具、代码交叉检视或者结对编程也是常用且有效的方式。
我个人比较喜欢的一种方式是看别人写的代码以及配合Use Case看历史代码的持续迭代过程,特别是那些业内软件大拿写的代码,这种过程本身就是一种比较享受的过程,
当然,当我们对好的代码和迭代看多了,我们或多或少都能做到依葫芦画瓢。
另外,我很喜欢Tim Peters写的《Python之禅》,绝大多数建议都是在围绕改进代码质量这个议题来描述的:

优美优于丑陋
明了优于隐晦
简单优于复杂
复杂优于繁杂
扁平优于嵌套
稀疏优于稠密
可读性很重要
特例亦不可违背原则
即使实用比纯粹更优
错误绝不能悄悄忽略
除非它明确需要如此
面对不确定性
拒绝妄加猜测
任何问题应有一种
且最好只有一种
显而易见的解决方法
尽管这方法一开始并非如此直观
除非你是荷兰人
做优于不做
然而不假思索还不如不做
很难解释的必然是坏方法
很好解释的可能是好方法
命名空间是个绝妙的主意
我们应好好利用它

参考文档