为什么祖传代码被称为「屎山」?

分类: 架构设计

保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/92/ )。

祖传代码,又臭又恶心。每一个接触它的人都在心里骂了千百遍!

但是,祖传代码在诞生之初,并不是这样的。

时光经年,一份代码是慢慢变臭的。

面对这些代码,我们要用历史发展观看它们。我们要理解,毕竟没有哪个程序员不想让自己的代码好,至少不会想让代码坏。

最开始,你可能接触到的是一个很简单的需求。就和下图一样,四个模块关联起来。

pic

于是,你把它开发成了上图的样子。一主三从、左右分布、清晰明了。

甚至,你还对代码进行了精炼和优化,一如上图中那优美的弧线一样。

这是一个不错的项目。

后来,需要新增一些功能。

其实变化不大,只不过是原始版本的稍加变更,你继续优雅地完成了。就和下图一样。

pic

甚至,你还对这次变动进行了详细的注释。就像上图那绿色的连线一样,和初始版本的蓝色连线进行了清晰的区分。

优雅,一如既往。

后来,功能进一步地复杂了一些。你也从容出手,轻快地敲击键盘,完成了新功能。

新功能就像下图的红色线条一样,虽然让项目多了几分凌乱,但也脉络清晰、功能完善。

pic

可是,你怎会停留于此?

你手中的每一份代码,都是精美的艺术品。注定不是只能完成功能的工具。

于是,你对它的结构进行了调整。

你对一些模块进行的标注,并重新梳理了模块间的逻辑。于是得到了下面的结构。

pic

依旧左右分布、依旧清晰明了。一如它初始时的样子,是一份艺术品。

项目终究还是需要继续演进,模块间需要增加一些新的逻辑关系。

不过,这次的逻辑关系稍有不同,这是你之前没有预料到的。

出乎意料?这不正是编程的魅力所在么?

每一个程序员都是着眼当下,面向未来!

而且,这次的工期很紧、任务很难!

纾难解困?这不正是编程的魅力所在么?

每一个程序员都是危坐案前,敲击荆棘!

所以,你还是修改代码,如期完成了上述功能。

就和下面的图片一样。

pic

甚至,为了这次功能的变动,你再次微调了模块之间的关系。让每一个箭头都从左往右流动。

工期紧张,但功能依旧完善。

模块众多,但结构依然清晰。

“每一个箭头都从左往右流动”这一点被打破,还是在开发某次重要的功能时。

那次功能复杂,时间也紧张。

“不可能因为这次功能重构整个系统结构”,你这样告诉自己。

“是的,即使重构,业务团队也无法将旧有的功能全部回归测试”,你再次肯定到。

但是你依旧努力做到最好。

系统演进成了下面的样子。

pic

岁月经年,没有那个团队会固守不变。

时光荏苒,难有那个系统会止步不前。

你也曾去负责其他系统,

也曾再次接手过这个系统。

系统也曾增加许多模块,

也曾废弃很多模块。

终于,

系统演化成了下面的样子。

pic

凌乱,但能跑!

有一天,

团队来了一个新同事。

他看完这个系统结构后,随口说了一句:

“这系统是谁写的啊?一坨屎!”

你心头一颤!

想起了系统的每一个版本,每一次变动。

想起了曾经功能简单的系统,

想起了曾经秀发茂密的自己。

你想反驳,却又不知从何说起。

最终,

你只是走过去,轻拍了他的肩。

无言。

可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。

作者书籍推荐

作者书籍推荐 作者书籍推荐