博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从维度方面理解代码的切分方法
阅读量:2230 次
发布时间:2019-05-09

本文共 709 字,大约阅读时间需要 2 分钟。

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

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

    图中,func1不管怎么变化,在func2和func3看来,他都是不变的,很明显,这种切分方法封装了变化。
面向对象中的类一般分为基本类和组合类,基本类的获得往往也要用到维度的概念。这样,按照这样方法组织的系统才是敏捷的,项目也将保持恒定的前进速度。而不会出现越来越慢的情况。
【注1】油漆工的笑话
    有一家学校请了一个油漆工人来刷跑道,第一天的时候,这位工人刷了200米的距离,校方感到非常高兴,认为工人的效率很高;第二天的时候,工人只向前刷了 100米的距离,校方感到还可以接受;第三天的时候,工人只向前刷了50米,校方感到非常生气,就来质问工人是怎么回事?工人回答说:“原因在于刷漆时每 前进一米,我离油漆桶的距离远了一米啊!”

转载地址:http://slefb.baihongyu.com/

你可能感兴趣的文章
【C语言】交换两个数值的三种方法
查看>>
【数据结构】栈的简单理解以及对栈的基本操作
查看>>
【数据结构】简单不带环迷宫的实现(用栈实现)
查看>>
【C语言】简单的了解递归(求斐波那契,n的阶乘,字符串长度,把一个整型(无符号),转化为字符型并打印出来)
查看>>
【数据结构】动态栈的实现
查看>>
【数据结构】简单的迷宫(用递归实现)
查看>>
【数据结构】队列的基本认识和队列的基本操作
查看>>
【数据结构】循环队列的认识和基本操作
查看>>
【LeetCode】无重复字符的最长子串
查看>>
时间复杂度
查看>>
【C++】动态内存管理 new和delete的理解
查看>>
【Linux】了解根目录下每个文件的作用
查看>>
【Linux】进程的理解(一)
查看>>
【Linux】进程的理解(二)
查看>>
【C语言】深度理解函数的调用(栈帧)
查看>>
【Linux】进程的理解(三)
查看>>
【C++】带头节点的双向线链表的实现
查看>>
【C++】STL -- Vector容器的用法
查看>>
【Linux】Linux中的0644 和 0755的权限
查看>>
【数据结构】有关二叉树的面试题
查看>>