代码写出来以后,是要重复使用的。即便你只是一时兴起做了个小项目上传到GitHub上,你永远不会知道你的这个小项目会不会突然之间就火了,让你从此以后都沉浸在修改屎山代码的快乐中。当然,即便你在写的根本就不是自己的项目,大家都清楚乱七八糟和整齐利落的代码中,哪个更快乐。
有没有可能避免屎山我不知道,但要让代码变得更加干净工整还是可以的。作为程序猿,坚持写出整齐干净的代码永远是利人利己的好习惯。整齐干净的代码能让改bug的工作变得更简单,这不仅可以有效地减少工作压力,连带地可能还能减少头秃的危害性。即便以后不再负责那个项目了,做起交接工作也会更轻松。
简单来说,虽然部分的编程习惯并不会实际影响代码运行,但却会影响维护代码所需的时间和精力。放在平时也需问题不大,但临近项目交付期才出bug的话,可能离一夜秃头也不远了。所以,良好的编程习惯不仅能够提升代码的质量,其实侧面也能影响我们自己的工作和健康质量。
优秀的代码基本遵循这四个特性:可维护性、可扩展性、可读性和可移植性。要满足这四个特性虽然不可能只靠编程习惯,但良好的编程习惯却对优秀代码功不可没。
1. 使用有意义的变量名称
使用有意义的变量名称这个大概在很多基础编程课就已经讲过了。我们的变量或函数名称尽可能要根据其内容和功能来命名,那样代码整体的可读性也会更强。如果觉得某些名字过于冗长,其实还是可以把这些名称简化。例如把BeautifulSoup缩写为bs或把image缩写为img等,只要代码内保持一致即可。
看看这两个功能完全相同的代码,哪个更简单易懂呢?
文章截图来自代码开发工具Lightly
2. 积极使用注释
注释是一个神奇的东西。我们写代码的那个当下也许思路清晰,但如果完全不注释,哪天再检查代码的时候,也许就会觉得 …… 我到底写了个什么玩意儿。
代码是写给电脑看的,而注释是写给人类的。即便让变量名称和编程语法更趋近人类语言,编程语言和自然语言终究不一样。不要总想着去超脱人类的本质,实事求是地写好注释,对大家都有好处。
虽然如此,写注释也有写注释的一些基本要求:
重质不重量。写代码和注释都不是拼字数行数,不是越长就越好。注释的目的是为了让代码更具可读性,如果注释反而让扰乱了其他程序员的思绪,那就是背道而驰了。
不要觉得其他人都懂。人与人之间是无法完全理解的,所以写出的程序也是同样的道理。清楚说明每一个改动背后的原因,避免日后反复在同一个地方纠结,甚至也可以发现新的思路。
解释代码背后的逻辑。如果写的算法比较复杂,不妨解释一下为什么代码要这样写。编程从来不是单枪匹马地战斗,一个好的注释能让大佬一看就明白算法逻辑,新手也从中学习积累。
3. 减少重复代码,让代码更简洁
前面说过,代码写出来的意义就是要能够重复使用。如果能把一段代码变成函数,那就把它变成函数应用到其他代码中。如果可以形成一整个代码库,那也同样不要犹豫。
我们在编写代码中使用的各种代码库其实就遵循着类似的逻辑。即便重复使用的不是整个库,我们也可以截取代码库中的一部分,或者把这些代码形成一个成熟的模板,重复使用。
重复使用代码可以让开发过程变得更有效率,同时也可以减少重复编写代码留下的差错。毕竟,哪怕一个标点符号的细小差别,都有可能造成代码无法运行。如果知道代码模板的其他部分没有问题,那就可以专注检查修改过的部分。
代码模板可以自己构建也可以选择使用成熟的代码模板。云端编辑器Lightly IDE允许大家在新建项目时,选择Python代码模板或Java代码模板,同时为大家安装好相应的环境变量和第三方库。如此一来,大家就可以专注于编写项目代码,集中精力写出自己想要的功能和程序。
4. 注意代码的耦合度与内聚性
高内聚低耦合是编程乃至整个软件工程中一个相当重要的概念。高内聚指的是代码相关部分中的结合度,而低耦合则鼓励把代码中不相关的部分隔离开来。
高内聚低耦合的代码示意图。
虽然耦合度和内聚性听起来像是完全相反的概念,但他们往往不会分开讨论。高内聚确保相关的模块或函数之间有紧密的联系,方便我们在拓展代码的时候,能够轻易找到相关的函数或模块。另一方面,低耦合则确保不相关代码之间的依赖性,尽可能避免两个不相关的功能依赖同一个函数甚至变量。
高内聚低耦合的代码能确保写出来的程序具有良好的可维护性、可扩展性和可测试性。反之,若各个模块之间的关系杂乱无章,则容易触发bug。视项目难易度而定,这种由高耦合引起的bug可能会对程序员来说更为棘手,因为哪怕是简单的修改都有可能导致整个程序崩溃。
若要降低耦合度,可采取的方法包括简化模块,避免其他模块重复调用。另外,编程时也要尽可能减少使用全局变量,遵循一个定义只在一个地方出现的原则,避免直接操作或调用其它模块或类。
5. 使用统一的首行缩进
最后也是最重要但也却最简单的部分,就是保持首行缩进统一。现在的大家基本都使用IDE,即便是像VS Code这种比较轻量化的编辑器,也都自带首行缩进,问题其实并不大。
如果你没有办法按照一定的首行缩进或格式写代码,其实也不需要太焦虑。在Lightly的编辑界面可以直接右键格式化代码,其他的编辑器也可以在插件或其他设置中找到类似的功能。
更细致的编程习惯其实根据不同的编程语言甚至不同的公司或行业都不太一样,其中的命名方式、首行缩进甚至是文件结构都会有所不同。因此,保持良好的编程习惯并不是一个一成不变的事,而是需要根据实际的工作环境适当进行调整的。
即使只是编写自己的小作业或小项目,微小的编程习惯都能对日后带来正面的影响,包括面试和工作时的表现和结果。而编程习惯之所以称之为「习惯」,正是因为这些细节并不是一次就能练成,而是在长年累月的编程中不断地培养出来的。