Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63158
  • 博文数量: 14
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 130
  • 用 户 组: 普通用户
  • 注册时间: 2015-03-21 13:33
个人简介

业精于勤,荒于嬉;行成于思,毁于随。

文章分类

全部博文(14)

分类: 信息化

2019-12-04 10:17:08

每一个程序员,都会有阅读源码的需求,源码有好坏,不是每个源码都如你所愿,注释,格式等等都会因为每个人的习惯不同而有所差异。每一个新进入职场或者进入一个新公司的人,都会或多或少的接触到公司原有产品的代码,除非这个公司让你来开发一个全新的产品,所有的代码都要从新开发。即使这样,你依然需要参考或借鉴一些网络上的一些项目。总而言之。阅读和理解源码是不可避免的,我们的进步也需要我们来进行阅读源码。

阅读源码是不可避免的,但不是每份源码都如你所愿,写得优雅而让你看得津津有味。在很多情况下,你可能会碰到很糟糕的代码,但你又不得不阅读理解和修改他时,那么对原有代码的优化,不仅有助于你理解和修改代码,更有利于后续的维护。因为,我们拿到源码的第一件事,就是要对源码进行优化。对源码的优化,要保证不会引入新的错误,这是最基本的要求。本文讲述的是拿到一份代码后,如何对他进行优化的问题。

第一,对源码的内容进行排版。每个源码的格式排版应该保持一致,哪里放全局变量的定义,哪里放函数的前置声明,哪里放函数的定义,哪里进行宏定义,哪里进行结构体定义都应该统一。对程序源码格式排版可以参考http://blog.chinaunix.net/uid-30171665-id-5784657.html的描述。通过这一步的修改,使源码的格式趋于统一化,以及快速的定位相关的内容。

第二,对源码增加注释。其实一开始,我是想把源码注释放在首要处理的位置的,在实际的工作中,对源码的注释也经常是我首次处理的任务。如果阅读理解源码的时间不是很紧迫,把这一项放在格式排版之后处理我觉得更为合理。因为有了统一的格式,源码无论原来是如何糟糕,经过排版,整体上让人看着很有条理性。而对源码的注释,是建立在对源码的理解上面的,注释力求准确,如果不清晰,宁愿先留空,也不可把自己模棱两可的注释增加的代码当中,这样不仅容易误导自己,也容易误导后面接手的人。需要增加的注释包括所有的全局变量,所有的宏定义,所有的结构体定义以及内部成员的描述以及所有的函数注释等。

注释不是单纯的注释,而是建立在完全理解源码意图的基础上来进行的。当所有的注释内容增加完全,那么就应该是对整个源码都有所理解,允许忽略一些细节或者函数内部的实现,但总的代码架构和意图应该了然于心。俗话说,磨刀不误砍柴工,注释是一件很费时的事情,但也是一件很值得去做的事情。

第三,删除源码中废弃的代码。废弃代码的遗留,虽然说废弃的代码保留在内部不会对编译造成任何的影响,但会影响整个代码的整洁性。现代的源码管理都是基于版本管理的,可以实现任意版本的恢复,即使废弃的代码很有可能会重新启用,但是在没有用到的时候,还是尽量的把他删除,如果真的有需要重新启动的需要,那么从版本管理器中恢复旧的源码,从新引到最新的源码也不会是一件很困难的事。并且是实际操作的过程中,这种废弃的代码重新启动的可能性基本很小,也就没有保留在源码的必要了。通过删除源码中废弃的代码,能够实现源码的简洁化,后续也不会让我们看到一些废弃的信息。

第四,对源码进行解耦,分离任务程序。前面的三个步骤没有更改源码的内容,仅是进行排版和对注释的修改。从这个步骤开始,将对源码有一些小的改动,但也不会影响内部的具体内容。如果源码的耦合度较高,这个步骤就很有必要了。从自身对源码的理解的基础上,对源码的耦合度进行分析,将解耦的程序放在新的源码文件上面。这个步骤的操作,主要是针对任务函数来进行,具体函数内部的操作不宜做太大的改动,主要修改的是任务调度函数来实现任务的解耦。

第五,为函数和全局变量增加static限制,删除不必要的函数对外声明和变量的对外导出。如果函数和全局变量缺少了static限制,那么很有可能在别的文件就会进行隐式的调度,模块对外的服务就会变得不明朗。增加static限制后,没有对外导出的服务跟变量,就只限定了在本模块文件中调用。对不需要知道内部实现的时候,仅靠阅读头文件就知道了本模块文件实现和提供了什么服务了。

第六,删除没有使用的变量定义。变量的引入会带来新的理解困难,对于一些变量定义,很可能之前有使用,但后续因为某种原因而变成了一个废弃变量,只有其定义而没有其调用,或者是其调用没有任何的意义。、

第七,整合零散的全局变量,用结构体定义的方式来统一管理。对于归属于同一类属或组别的全局变量定义,统一化管理就很有必要。

第八,减少全局变量的导出,尽量的使用函数的导出。

第九,优化函数内部对全局变量的引用。非全局变量的操作函数,不应该直接使用全局变量,而应该使用它的操作函数来设置或者获取值。

最后,使用标准格式工具,对源码进行对齐。在编写过程中,很容易出现在本电脑对齐,而更改到别人的电脑查看时,出现对齐异常的问题。尤其是tab键的,不是每个人的设置都是一样的宽度的。通过使用格式工具(Astyle),使tab键全部更改为空格表示,这样无论在哪个地方打开,其都能保持代码的对齐。

代码的优化任重而道远,这里列举的仅仅是表面的优化,保持原有程序的逻辑,使源码变得优雅。我想说的是,通过对源码的优化,来要求自己编写的代码风格,趋于优雅,不仅仅是为了优化而优化,而是通过对源码的优化,对编程优雅形成一种自我要求,从而保证代码的质量和可靠性。

阅读(943) | 评论(0) | 转发(0) |
0

上一篇:c语言模板代码注释架构-使用说明

下一篇:没有了

给主人留下些什么吧!~~