从维度方面理解代码的切分方法

从维度方面理解代码的切分方法
黄国强 2011-3-29

    我曾见过一个函数8千行的代码,显然,维护这样的代码就是噩梦。
简单的不动脑筋的重构方法,就是把这些代码分成几个过程函数。通过全局变量在这几个函数之间交换数据。
    表面上看,几个函数比一个函数肯定好多了,但这只是表面现象。事实上,运气不好的话,修改一段代码,可能需要把这8千行的代码又看一遍。这不由得让我想起一个“油漆工的笑话”【注1】。这种代码组织方法,随着代码行的数目增多越大,软件项目前进速度会越来越慢。
现在用面向对象的方法组织代码非常流行,但是如果不了解背后的分解原理,最后得到的结果可能并不好,甚至于更糟。
    还是拿上面8千行的例子,我们从维度方面来考察我们的目标。比如,我们要将原先一个函数切分成三个函数,我们必须保证这三个函数是三个维度方向彼此独立发展,只有这样,我们才能使我们每次修改阅读的代码量显著减少。如下图:


    图中,func1不管怎么变化,在func2和func3看来,他都是不变的,很明显,这种切分方法封装了变化。
面向对象中的类一般分为基本类和组合类,基本类的获得往往也要用到维度的概念。这样,按照这样方法组织的系统才是敏捷的,项目也将保持恒定的前进速度。而不会出现越来越慢的情况。

【注1】油漆工的笑话
    有一家学校请了一个油漆工人来刷跑道,第一天的时候,这位工人刷了200米的距离,校方感到非常高兴,认为工人的效率很高;第二天的时候,工人只向前刷了 100米的距离,校方感到还可以接受;第三天的时候,工人只向前刷了50米,校方感到非常生气,就来质问工人是怎么回事?工人回答说:“原因在于刷漆时每 前进一米,我离油漆桶的距离远了一米啊!”

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值