1 ) 可维护性
可维护性强的代码指的是:在不去破坏原有的代码设计以及不引入新的BUG的前提下,能够快速的修改或者新增代码。不易维护的代码指的是:在添加或者修改一些功能逻辑的时候,存在极大的引入新的BUG的风险,并且需要花费的时间也很长。
代码可维护性的评判标准比较模糊,因为是否易维护是针对维护的人员来说的,不同水平的人对于同一份代码的维护能力是不同的。所谓 “难者不会 会者不难”。对于同样的系统,熟悉它的资深工程师会觉得代码可维护性还可以,而新人则会因为能力不足、了解不够深入等原因觉得代码的可维护性不是很好。
2 ) 可读性
软件开发教父,Martin Fowler曾经说过一句话: "任何傻瓜都能够编写计算机能理解的代码,而优秀的程序员能够编写人类能理解的代码。" 这句话的意思非常容易理解,就是要求我们写出的代码是易读的、易理解的,因为代码的可读性会在很大程度上影响代码的可维护行性。
code review ( 代码审查,一种测试代码可读性的手段 )
1、检查代码风格和编程规范: 代码是否符合编码规范、命名是否达意、注释是否详尽、模块划分是否清晰等。
2、检查常规的 bad smell 和代码 bug: 是否存在重复代码、过长函数、过大类、过于亲密的两个 classes等。
3 ) 可扩展性
代码的可扩展性表示,我们在不修改或少量修改原有代码的情况下,通过扩展的方式添加新的功能代码。
可扩展性的背后其实就是: "对修改关闭,对扩展开放" 这条设计原则。
4 ) 灵活性
"灵活" 是指在添加新代码的时候,已有代码能够不受影响,不产生冲突,不出现排斥,在保证自身不遭到破坏的前提下灵活地接纳新代码。
下面的几个场景,可以体现代码的灵活性
1、添加新的功能代码时,原有代码已经预留了扩展点,我们不需要修改直接在扩展点上新增代码即可。
2、当我们想实现一个功能模块时,发现原有代码中,已经抽象出了很多底层可以复用的模块、类等代码,我们可以直接拿来使用。
3、当我们使用某组接口时,这组接口可以应对各种使用场景,满足不同需求,这个接口设计的十分的灵活易用。
5 ) 简洁性
我们要遵从KISS ( Keep It Simple Stupid) 原则,代码要尽可能的简单;但是思从深而行从简,真正的高手能云淡风轻地用最简单的方法解决最复杂的问题。
这也是一个编程老手跟编程新手的本质区别之一。
代码的写法应当使别人理解它所需的时间最小化。
6 ) 可复用性
代码的可复用性可以简单地理解为,尽量减少重复代码的编写,复用已有的代码。
可复用性也是一个非常重要的代码评价标准,是很多设计原则、思想、模式等所 要达到的最终效果可复用性与DRY(Don't Repeat Yourself) 避免编写重复的代码逻辑。原则关系紧密,后面我们会介绍有哪些编程方法可以提高代码复用性。
7 ) 可测试性
单元测试在一个完整的软件开发流程中是必不可少的、非常重要的一个环节。通常写单元测试并不难,但有的时候,有的代码和功能难以测试,导致写起测试来困难重重。所以写出的代码具有可测试性,具有很重要的作用。
代码可测试性的好坏,能从侧面上非常准确地反应代码质量的好坏。