当前位置: 华文星空 > 知识

为什么有人可以在屎一样混乱的几千行代码里加功能?不重构能驾驭屎山吗?

2021-11-19知识

因为加功能和重构完全是不一样的。

我记得有另外一个问题是问:为什么有人说只要代码能运行就不要去碰它。

这恰恰就是说的这种情况。

屎山本身内部在维持一个微妙的平衡,很多地方都是正好只有这一个点是OK的,你稍微改一下就稀里哗啦如同多米诺骨牌一样的结果。

但是这很多时候并不妨碍你加东西。你只需要注意不要去改变原来的结构就是了。

这就好像操作系统在执行屎山的时候,也能并行执行其它任务一样。

对于屎山,你需要做的就是尽量将你新加的加在外部,而不是内部。

举个例子,微软的office很多后面加的功能,其实都是类似于执行VBA,也就是用脚本模仿用户手动操作,而不是直接改内部逻辑。

所以很多操作很慢。但是能用,这就OK了。

同样的功能在google docs里面,很可能就会轻量很多,虽然那是用网页+脚本语言写的。

爱立信有位工程师,搞了一套所谓面向方面的编程(AOP),就是改编译器,在每个函数的入口和出口自动插入钩子(跳转点)。这样加功能的时候,就不必动原本的结构,只是hook出去跑新的代码,然后再hook回来。

颇有杀毒软件是如何监视其它软件运行的味道。杀毒软件都不需要改你的程序,就可以改变你的程序的很多行为。

但是重构。。。那就完全不是这么一回子事情了。大部分时候是,牵一发动全身,稀里哗啦碎了一地,然后决定另起炉灶。但是已有的生意不能停,新的生意也要做,所以最后就变成半新半旧:一座新的屎山产生了。