购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 代码可读性的级别

在讨论如何编写具有良好可读性的代码之前,我们首先讨论代码可读性的衡量标准。按照通俗的说法,代码可读性大致可以分为以下4个级别。

(1)初级可读性。代码能够顺利通过编译并运行,也能得到预期的结果。这表明计算机——或者更准确一点,编译器——“读懂”了我们编写的代码。但过了一段时间之后,我们再来查看这些代码时,会发现我们很难一眼看懂这些代码的逻辑和思路。相信初学编程的程序员都有过类似的经历。这便是具有初级可读性的代码。它们不是写给其他人或者三个月之后的自己阅读用的,而只是为了能编译生成可执行程序而已。显然,对其他程序员而言,维护一段连作者自己都看不懂的代码,比重写相同功能的代码还要痛苦很多倍。这种代码可以出现在初学阶段的练习题解答中,但绝对不应该出现在产品当中。

(2)中级可读性。这种代码在经过一段时间(如3个月)之后,仍然能被代码作者看懂。但若稍作思考,便可发现代码中存在很多值得改进的地方,因此常常会萌生重写代码的冲动。这意味着代码符合一定的章法,只是远远不够成熟。如果产品代码中存在大量具有中级可读性的代码,则说明产品代码的整体质量有待改进。

(3)高级可读性。这种代码易于被其他程序员理解,并且其他程序员能够在原有基础上做进一步的修改和完善(比如调试和优化),也就是所谓的“看得懂,改得动”。这里说代码“具有高级可读性”,通常意味着代码具有良好、清晰的模块划分和接口设计,也意味着代码作者具有良好的编码风格和命名习惯,只是在具体实现上还有一些不完善的地方,或者还有改进和优化的地方。也就是说,具有高级可读性的代码通常具有良好的可维护性和可测试性。修改这些代码不会对项目的其他模块产生负面影响。因此,编写具有高级可读性的代码,应该是每一位程序员的目标。成熟、严肃、认真的程序员编写的代码至少应该具有高级可读性。软件产品中的绝大部分代码也应该达到高级可读性。

(4)典范级可读性。在正确性、易读性、易用性、执行效率方面已经达到或者贴近最优的代码,删除其中任何一个字符或者修改其中任何一个字母都显得多余,甚至不需要因为编译器的改变而做任何调整或维护。显然,典范级可读性是一种非常高的标准,需要丰富的经验、高超的技巧才能编写,更需要代码作者多年的经验沉淀。让一个软件项目的所有源代码都达到这个标准是不切实际的,但在某些常用且基础的功能模块上,发展、积累或者采纳具有典范级可读性的代码,则相对容易做到。比如,在持续发展了30多年的Linux内核代码中,就存在大量堪称典范的代码片段。

根据以上代码可读性级别的定义,初级和中级可读性的代码被认为是“坏代码”,编写具有高级可读性的代码是对专业程序员的基本素养要求,而具有典范级可读性的代码应该是所有程序员心驰神往的目标。

举个大家熟知的例子,经典的“Hello, world!”程序的源代码如下:

#include <stdio.h>
 
int main(void)
{
    printf("Hello, world!\n");
    return 0;
}

这便是具有高级可读性的C语言代码:排版整齐、编码严谨、编译器不会报任何编译警告,而且具有优秀的可移植性,不论使用哪个编译器或者哪个版本的编译器,都能正常编译和运行。但请看下面的代码:

int main()
{printf("Hello, world!\n");}

这便是具备初级可读性的代码:这段代码的排版没有章法,字符挤在一起不易阅读,没有包含正确的头文件, main() 函数的原型定义也不规范。当然,这段代码仍然可以编译并正确运行,但编译器可能会报一两个编译警告。 YDKbWM2rAFllRrzWxTUHpJksTCOEOc+OKvVMOJFggt1E3iYF5jqzB/uKYC/qAAKm

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开