欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【[编程好习惯] 复用代码以提高可维护性】,下面是详细的分享!
[编程好习惯] 复用代码以提高可维护性
代码复用在软件开发中存在两个层次。第一个层次是,在设计一个新的软件功能或是开发一个新的项目时,复用已存在的软件模块,这种复用或许称之为设计复用更好。另一个层次是,程序员在开发一个软件模块时,模块的内部应尽可能地复用。从编程习惯的角度来看,这里指的是后者。
现在假设存在一个双向链表(Double-Linked List, DLL)的一个模块,如果这个模块在开发的过程中,已经存在了两个函数,分别是dll_push_tail()和dll_pop_head(),这两个函数的作用分别是将一个新的节点加入到链表的尾部以及从链表中删除并返回头节点。其代码实现如下所示。
|
以下为引用的内容: dll.c |
如果此时需要增加一个新的链表操作函数dll_merge(),用于合并两个链表。则这个函数的实现可能如图2所示。其思路也很简单,就是从_p_src链表中将一个个的节点取出并放到_p_dest链表的尾部。
|
以下为引用的内容: dll.c |
有问题吗?从功能性的角度来说没有问题,但是从可维护性方面来看,这一实现并不好,取而代之的更好实现是通过代码复用的方式,如下所示。
|
以下为引用的内容: dll.c |
显然,采用代码复用的方式,其可读性更好,也更容易维护。在实现一个软件模块时,应当考虑从所需实现的功能中抽取出一些公共的基本函数(比如,这里谈到的dll_pop_head()和dll_push_tail()),且这些函数所实现的功能是正交的(即功能没有重叠)。接下来,其它的功能(比如这里谈到的dll_merge())可以考虑采用搭积木的方式,通过运用那些最基本的函数去实现。
需要注意的是,采用复用方式实现的dll_merge()引入了函数调用,而函数的调用因为存在参数的传递可能会带来一定的处理器开销,其开销的大小与处理器的处理能力有关。但是,对于现代的大多处理器来说,这种开销都是很小的,且小到可以几乎忽略不计。另外,如果要去除函数调用所带来的开销,可以考虑采用inline的方式。拿这里的dll_merge()的实现为例,如果dll_push_tail()和dll_pop_head()被定义为inline的话,则dll_merge()中调用这两个函数就完全不存在函数调用的开销了。
本文出自 “李云” 博客,请务必保留此出处:http://yunli.blog.51cto.com/831344/263932
以上所分享的是关于[编程好习惯] 复用代码以提高可维护性,下面是编辑为你推荐的有价值的用户互动:
相关问题:如何提高Java代码可重用性
答:措施一:改写类的实例方法 通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的代码重用机制。换句话说,如果不继承整个类的所有方法和数据成员,我们无法重用该类里面的单个方法。继承总是带来一些多余的方法和数据成员,它们... >>详细
相关问题:如何提高代码质量6
答:高质量代码的三要素 我们评价高质量代码有三要素:可读性、可维护性、可变更性。我们的代码要一个都不能少地达到了这三要素的要求才能算高质量的代码。1.可读性强 一提到可读性似乎有一些老生常谈的味道,但令人沮丧的是,虽然大家一而再,再而... >>详细
相关问题:关于编程的问题
答:呵呵,这个问题问的比较广了。 首先要看你学哪门语言,每一门语言的领域是不同的。比如C/C++适合做软件和系统,C和汇编也可以做嵌入式,JAVA、C#则偏重网络等等。 另外,算法和数据结构应该是编程语言必学的课程了,这是提高编程质量的必学课程... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
