编辑:[db:作者] 时间:2024-08-25 03:43:26
对付程序员来说,辨别代码写得“好”还是“烂”,是一个非常主要的能力。这也是我们写出好代码的条件。毕竟,如果我们连什么是好代码、什么是烂代码,都分辨不清,又谈何写出好代码呢?
以是,本日我们就聊一聊关于代码质量评判的干系问题,希望你在学完本日的内容之后,对代码质量的评判有个更加清晰、更加透彻的认识和理解。
如何评价代码质量的高低?
实际上,咱们平时嘴中常说的“好”和“烂”,是对代码质量的一种描述。“好”笼统地表示代码质量高,“烂”笼统地表示代码质量低。对付代码质量的描述,除了“好”“烂”这样比较大略粗暴的描述办法之外,我们也常常会听到很多其他的描述办法。这些描述方法语义更丰富、更专业、更细化。
我搜集整理了一下,罗列在了下面。这些险些涵盖我们所能听到的描述代码质量的所有常用词汇,你可以看一看。
灵巧性(flexibility)、可扩展性(extensibility)、可掩护性(maintainability)、可读性(readability)、可理解性(understandability)、易修正性(changeability)、可复用(reusability)、可测试性(testability)、模块化(modularity)、高内聚低耦合(high cohesion loose coupling)、高效(high effciency)、高性能(high performance)、安全性(security)、兼容性(compatibility)、易用性(usability)……
看到如此多的描述词,你可能要问了,我们到底该用哪些词来描述一段代码的质量呢?
实际上,我们很难通过个中的某个或者某几个词汇来全面地评价代码质量。由于这些词汇都是从不同维度来说的。这就好比,对付一个人的评价,我们须要综合各个方面来给出,比如性情、容貌、能力、财富等等。代码质量高低也是一个综合各种成分得到的结论。
最常用的评价标准有哪几个?
仔细看前面罗列的所有代码质量评价标准,你会创造,有些词语过于笼统、抽象,比较倾向对付整体的描述,比如优雅、好、坏、整洁、清晰等;有些过于细节、侧重方法论,比如模块化、高内聚低耦合、文档详尽、分层清晰等;有些可能并不仅仅局限于编码,跟架构设计等也有关系,比如可伸缩性、可用性、稳定性等。
为了做到对症下药、有重点地学习,我挑选了个中几个最常用的、最主要的评价标准,来详细讲解,个中就包括:可掩护性、可读性、可扩展性、灵巧性、简洁性(大略、繁芜)、可复用性、可测试性。接下来,我们逐一讲解一下。
1. 可掩护性(maintainability)
我们首先来看,什么是代码的“可掩护性”?所谓的“掩护代码”到底包含哪些详细事情?
落实到编码开拓,所谓的“掩护”无外乎便是修正 bug、修正老的代码、添加新的代码之类的事情。所谓“代码易掩护”便是指,在不毁坏原有代码设计、不引入新的 bug 的情形下,能够快速地修正或者添加代码。所谓“代码不易掩护”便是指,修正或者添加代码须要冒着极大的引入新 bug 的风险,并且须要花费很长的韶光才能完成。
代码的可掩护性是由很多成分协同浸染的结果。代码的可读性好、简洁、可扩展性好,就会使得代码易掩护;相反,就会使得代码不易掩护。更细化地讲,如果代码分层清晰、模块化好、高内聚低耦合、屈服基于接口而非实现编程的设计原则等等,那就可能意味着代码易掩护。
除此之外,代码的易掩护性还跟项目代码量的多少、业务的繁芜程度、利用到的技能的繁芜程度、文档是否全面、团队成员的开拓水平等诸多成分有关。以是,从正面去剖析一个代码是否易掩护轻微有点难度。不过,我们可以从侧面上给出一个比较主不雅观但又比较准确的感想熏染。
如果 bug 随意马虎修复,修正、添加功能能够轻松完成,那我们就可以主不雅观地认为代码对我们来说易掩护。相反,如果修正一个 bug,修正、添加一个功能,须要花费很长的韶光,那我们就可以主不雅观地认为代码对我们来说不易掩护。
2. 可读性(readability)
我个人认为,代码的可读性该当是评价代码质量最主要的指标之一。我们在编写代码的时候,时候要考虑到代码是否易读、易理解。除此之外,代码的可读性在非常大程度上会影响代码的可掩护性。既然可读性如此主要,那我们又该如何评价一段代码的可读性呢?
我们须要看代码是否符合编码规范、命名是否达意、注释是否详尽、函数是否是非得当、模块划分是否清晰、是否符合高内聚低耦合等等。你该当也能觉得到,从正面上,我们很难给出一个覆盖所有评价指标的列表。这也是我们无法量化可读性的缘故原由。实际上,code review 是一个很好的测验代码可读性的手段。
如果你的同事可以轻松地读懂你写的代码,那解释你的代码可读性很好;如果同事在读你的代码时,有很多疑问,那就解释你的代码可读性有待提高了。
3.可扩展性(extensibility)
可扩展性也是一个评价代码质量非常主要的标准。它表示我们的代码应对未来需求变革的能力。跟可读性一样,代码是否易扩展也很大程度上决定代码是否易掩护。那到底什么是代码的可扩展性呢?
代码的可扩展性表示,我们在不修正或少量修正原有代码的情形下,通过扩展的办法添加新的功能代码。说直白点便是,代码预留了一些功能扩展点,你可以把新功能代码,直接插到扩展点上,而不须要由于要添加一个功能而大动兵戈,改动大量的原始代码。
关于代码的扩展性,在后面讲到“对修正关闭,对扩展开放”这条设计原则的时候,我会来详细讲解,本日我们只须要知道,代码的可扩展性是评价代码质量非常主要的标准就可以了。
4. 灵巧性(flexibility)
灵巧性也是描述代码质量的一个常用词汇。比如我们常常会听到这样的描述:“代码写得很灵巧”。那这里的“灵巧”该如何理解呢?
只管有很多人用这个词汇来描述代码的质量。但实际上,灵巧性是一个挺抽象的评价标准,要给灵巧性下个定义也是挺难的。不过,我们可以想一下,什么情形下我们才会说代码写得好灵巧呢?我这里罗列了几个场景,希望能引发你自己对什么是灵巧性的思考。
当我们添加一个新的功能代码的时候,原有的代码已经预留好了扩展点,我们不须要修正原有的代码,只要在扩展点上添加新的代码即可。这个时候,我们除了可以说代码易扩展,还可以说代码写得好灵巧。
当我们要实现一个功能的时候,创造原有代码中,已经抽象出了很多底层可以复用的模块、类等代码,我们可以拿来直策应用。这个时候,我们除了可以说代码易复用之外,还可以说代码写得好灵巧。
当我们利用某组接口的时候,如果这组接口可以应对各种利用场景,知足各种不同的需求,我们除了可以说接口易用之外,还可以说这个接口设计得好灵巧或者代码写得好灵巧。
从刚刚举的场景来看,如果一段代码易扩展、易复用或者易用,我们都可以称这段代码写得比较灵巧。以是,灵巧这个词的含义非常宽泛,很多场景下都可以利用。
5. 简洁性(simplicity)
有一条非常著名的设计原则,你一定听过,那便是 KISS 原则:“Keep It Simple,Stupid”。这个原则说的意思便是,只管即便保持代码大略。代码大略、逻辑清晰,也就意味着易读、易掩护。我们在编写代码的时候,每每也会把大略、清晰放到首位。
不过,很多编程履历不敷的程序员会以为,大略的代码没有技能含量,喜好在项目中引入一些繁芜的设计模式,以为这样才能表示自己的技能水平。实际上,思从深而行从简,真正的高手能云淡风轻地用最大略的方法办理最繁芜的问题。这也是一个编程老手跟编程新手的实质差异之一。
除此之外,虽然我们都能认识到,代码要只管即便写得简洁,符合 KISS 原则,但怎么样的代码才算足够简洁?不是每个人都能很准确地判断出来这一点。以是,在后面的章节中,当我们讲到 KISS 原则的时候,我会通过详细的代码实例,详细给你阐明,“为什么 KISS 原则看似非常大略、好理解,但实际上用好并不随意马虎”。本日,我们就暂且不展开详细讲解了。
6. 可复用性(reusability)
代码的可复用性可以大略地理解为,只管即便减少重复代码的编写,复用已有的代码。在后面的很多章节中,我们都会常常提到“可复用性”这一代码评价标准。
比如,当讲到面向工具特性的时候,我们会讲到继续、多态存在的目的之一,便是为了提高代码的可复用性;当讲到设计原则的时候,我们会讲到单一职责原则也跟代码的可复用性干系;当讲到重构技巧的时候,我们会讲到解耦、高内聚、模块化等都能提高代码的可复用性。可见,可复用性也是一个非常主要的代码评价标准,是很多设计原则、思想、模式等所要达到的终极效果。
实际上,代码可复用性跟 DRY(Don’t Repeat Yourself)这条设计原则的关系挺紧密的,以是,在后面的章节中,当我们讲到 DRY 设计原则的时候,我还会讲更多代码复用干系的知识,比如,“有哪些编程方法可以提高代码的复用性”等。
7. 可测试性(testability)
相对付前面六个评价标准,代码的可测试性是一个相对较少被提及,但又非常主要的代码质量评价标准。代码可测试性的好坏,能从侧面上非常准确地反应代码质量的好坏。代码的可测试性差,比较难写单元测试,那基本上就能解释代码设计得有问题。关于代码的可测试性,我们在重构那一部分,会花两节课的韶光来详细讲解。现在,你暂时只须要知道,代码的可测试性非常主要就可以了。
如何才能写出高质量的代码?
我相信每个工程师都想写出高质量的代码,不想一贯写没有发展、被人吐槽的烂代码。那如何才能写出高质量的代码呢?针对什么是高质量的代码,我们刚刚讲到了七个最常用、最主要的评价指标。
以是,问如何写出高质量的代码,也就等同于在问,如何写出易掩护、易读、易扩展、灵巧、简洁、可复用、可测试的代码。要写出知足这些评价标准的高质量代码,我们须要节制一些更加细化、更加能落地的编程方法论,包括面向工具设计思想、设计原则、设计模式、编码规范、重构技巧等。而所有这些编程方法论的终极目的都是为了编写出高质量的代码。
比如,面向工具中的继续、多态能让我们写出可复用的代码;编码规范能让我们写出可读性好的代码;设计原则中的单一职责、DRY、基于接口而非实现、格式更换原则等,可以让我们写出可复用、灵巧、可读性好、易扩展、易掩护的代码;设计模式可以让我们写出易扩展的代码;持续重构可以时候保持代码的可掩护性等等。
下面给大家精心准备了一份资料,转发,点赞再私信我就能获取哦~
本文来源WEB明教光明顶“https://web.xingruanedu.com/”
本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/ktwx/104941.html
上一篇:华茂工艺取得一种自动纸筒加盖装配专利实现纸筒自动化加工
下一篇:返回列表
Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码
声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com