本文转载自公众号“读芯术”(ID:AI_Discovery)。
作为代码工作中至关重要的一环,代码结构化是颇具难度的。要想写出结构良好的代码,编写者需要具有正确的思维方式,对设计模式有自己的理解,还得拥有丰富经验。通常情况下,要想培养上述能力,你要走的路可不少。
代码结构化的重要性不应被低估,从可读性和可维护性的角度来看,代码结构非常重要。
经验1:提前设计
在着手编写代码之前,你最好考虑一下对将要构建的应用程序进行提前设计,统一建模图表(UML diagrams)就是个不错的选择。在编写代码之前,如果提前有计划在手,编写者可以更加专注。通过提前思考代码的结构,创建一些有用的UML图表,许多明显缺陷都可以提前避免。
更重要的是,制定计划能让我们认识到,在编写代码前还有许多需要编写者思考的事情。UML图还可以防止代码编写者“思想游离”,并且防止编写者在代码里添加自认为将来会派上用场的非必要功能。
不做计划就急着开始,在最初你能跑得快一点儿,但跳过这个步骤最终会使你不得不对大量代码进行重构,进而消耗大量时间和动力。记住,欲速则不达。
经验2:类与函数准则
以下准则可以帮助你保持类与函数的可读性及可维护性:
- 使类与函数尽可能地小
- 类与函数应遵循单一职责原则
保证类与函数尽可能小可以使代码更容易理解。一般来说,较大的类和函数应被分解为较小的专门化类别。
遵循单一责任原则可以帮助你保持类和函数在较小的级别,即每个类、每个函数只做一件事。但注意,要在合理范围内划分得“小”,因为多数情况下,过多的细小分类反而要比几个大类糟糕得多。把函数分成“获取、处理及存储数据”这样的大型函数是行不通的。你必须将此函数分成三个较小的函数:分别用于提取、处理和数据存储。
经验3:使用设计模式
了解设计模式及其工作方式可以帮助你编写出更加结构化、更具可读性与可维护性的代码。如果你清楚在哪些情况下可以使用哪种设计模式,就不必非得自己想解决办法了,你只需遵循设计原则就可以保持代码的整洁。
不过要注意,不要过度使用设计模式,这是使用这种方法时最常见的陷阱。尽管在特定情况下可以使用设计模式,但过度使用设计模式对编写者来说有弊无利,它会使应用过度机械化,其他开发人员会很难理解代码。
经验4:代码规范
代码结构化在很大程度上与代码规范有关。对于每个项目来说,代码规范都是必要,如果没有代码规范,代码变得团团乱以至难以阅读是迟早的事。
我们可以列出代码规范清单,记录下声明变量的方法、命名规范等。你可以无限向列表中添加规则,规则的数量也是可以变化的,只列出对你和对你的团队有帮助的规则便可。团队成员也可以随时向规范列表中添加或移除规则。
制定好规范清单后,就坚持照做吧!
经验5:编写单元测试
编写单元测试能产生不错的预期外的效果,它让你必须对代码进行结构化处理。为了能够编写出单元测试,至少要保证代码的结构是正确的。
也许你以前听说过或者编写过不可测试代码,如果有哪段代码让你不知道该如何编写单元测试的话,可能是因为这段代码功能过多,或者写得太差。
不管是上述两种情况的哪一种,只有一个原因会导致代码无法测试,那就是糟糕的结构。遇到不可测试的代码时,你会发现自己大部分时间都用在了重构上。单元测试便可以作为一种限制,使你必须将代码进行结构化处理。
图源:unsplash
实现代码结构化有好些方式。在你键入第一个代码字母之前就开始了,包括提前考虑应用程序的设计、创建帮助编写者消除明显缺陷的UML图等。
只要你准备编写代码,就应该确保拥有一份可以遵守的代码规范表。学习使用设计模式也可以进一步帮你实现这个目标。同时,你还需保持类与函数单位较小,并且让这些类与函数只做一件事。最后,要养成编写单元测试的习惯,不这样做最终只会得到一堆不可测试的代码。
要更认真地对待代码结构化了!