IT技术博客大学习 共学习 共进步

代码的可读性和易读性

kernelchina blogs 2011-09-27 15:37:25 浏览 2,882 次

特意区分开这两个不同的概念,前者是大家常常提到的,例如如何命名之类的,估计现在的老师在课堂上也会教。后者是我自己乱起的,是工程中的体会。

工程中同课堂不同的地方是,项目庞大,往往是几十几百万行的code,需要在给定的时间添加新功能或者更加紧迫的是解决客户问题。对于庞大的项目,想要理解系统架构,一个基本的技能要求是快速理解函数调用关系。我们常常使用cscope或者更高级的是source insight等等进行代码的索引,然后可以在编辑器内部快速的跳转。

实际的工程中会遇到一些情况,可读性和易读性相悖,例如:

1.宏替换

在C这种语言中,宏替换是常用或者滥用技巧。利用一些字符串拼接宏定义功能,可以使得代码看起来更加简洁,达到类似复用的效果,可读性好了。但是对于代码浏览者,想要跳转到宏对应的函数麻烦了很多,我们只能通过查找功能手动输入完整的函数进行查找,效率很低。

2.函数间接引用

很多实现模拟C++类方法组织数据结构,使用函数指针;有些实现传递函数指针为参数;也有将指针存储在数据表中通过数据触发调用。总之到底调用那个函数在阅读的时候不容易看到,有些模块从上到下都是如此实现的,头脑鲁钝如我的必须打印trace才知道功能是怎么调用。

对于大系统的开发维护,代码阅读和查找占据了程序员大量的时间,易读性差会耗费许多青春啊。

建议继续学习

  1. 编程语言的可读性 (阅读 4,962)
  2. 表格可读性提升分析 (阅读 2,541)
  3. 可读性:优化文本长度 (阅读 2,260)