本文共 709 字,大约阅读时间需要 2 分钟。
从维度方面理解代码的切分方法
黄国强 2011-3-29 我曾见过一个函数8千行的代码,显然,维护这样的代码就是噩梦。 简单的不动脑筋的重构方法,就是把这些代码分成几个过程函数。通过全局变量在这几个函数之间交换数据。 表面上看,几个函数比一个函数肯定好多了,但这只是表面现象。事实上,运气不好的话,修改一段代码,可能需要把这8千行的代码又看一遍。这不由得让我想起一个“油漆工的笑话”【注1】。这种代码组织方法,随着代码行的数目增多越大,软件项目前进速度会越来越慢。 现在用面向对象的方法组织代码非常流行,但是如果不了解背后的分解原理,最后得到的结果可能并不好,甚至于更糟。 还是拿上面8千行的例子,我们从维度方面来考察我们的目标。比如,我们要将原先一个函数切分成三个函数,我们必须保证这三个函数是三个维度方向彼此独立发展,只有这样,我们才能使我们每次修改阅读的代码量显著减少。如下图:图中,func1不管怎么变化,在func2和func3看来,他都是不变的,很明显,这种切分方法封装了变化。 面向对象中的类一般分为基本类和组合类,基本类的获得往往也要用到维度的概念。这样,按照这样方法组织的系统才是敏捷的,项目也将保持恒定的前进速度。而不会出现越来越慢的情况。 【注1】油漆工的笑话 有一家学校请了一个油漆工人来刷跑道,第一天的时候,这位工人刷了200米的距离,校方感到非常高兴,认为工人的效率很高;第二天的时候,工人只向前刷了 100米的距离,校方感到还可以接受;第三天的时候,工人只向前刷了50米,校方感到非常生气,就来质问工人是怎么回事?工人回答说:“原因在于刷漆时每 前进一米,我离油漆桶的距离远了一米啊!”
转载地址:http://slefb.baihongyu.com/