为什么祖传代码被称为「屎山」?
保留所有版权,请引用而不是转载本文(原文地址 https://yeecode.top/blog/92/ )。
祖传代码,又臭又恶心。每一个接触它的人都在心里骂了千百遍!
但是,祖传代码在诞生之初,并不是这样的。
时光经年,一份代码是慢慢变臭的。
面对这些代码,我们要用历史发展观看它们。我们要理解,毕竟没有哪个程序员不想让自己的代码好,至少不会想让代码坏。
最开始,你可能接触到的是一个很简单的需求。就和下图一样,四个模块关联起来。
于是,你把它开发成了上图的样子。一主三从、左右分布、清晰明了。
甚至,你还对代码进行了精炼和优化,一如上图中那优美的弧线一样。
这是一个不错的项目。
后来,需要新增一些功能。
其实变化不大,只不过是原始版本的稍加变更,你继续优雅地完成了。就和下图一样。
甚至,你还对这次变动进行了详细的注释。就像上图那绿色的连线一样,和初始版本的蓝色连线进行了清晰的区分。
优雅,一如既往。
后来,功能进一步地复杂了一些。你也从容出手,轻快地敲击键盘,完成了新功能。
新功能就像下图的红色线条一样,虽然让项目多了几分凌乱,但也脉络清晰、功能完善。
可是,你怎会停留于此?
你手中的每一份代码,都是精美的艺术品。注定不是只能完成功能的工具。
于是,你对它的结构进行了调整。
你对一些模块进行的标注,并重新梳理了模块间的逻辑。于是得到了下面的结构。
依旧左右分布、依旧清晰明了。一如它初始时的样子,是一份艺术品。
项目终究还是需要继续演进,模块间需要增加一些新的逻辑关系。
不过,这次的逻辑关系稍有不同,这是你之前没有预料到的。
出乎意料?这不正是编程的魅力所在么?
每一个程序员都是着眼当下,面向未来!
而且,这次的工期很紧、任务很难!
纾难解困?这不正是编程的魅力所在么?
每一个程序员都是危坐案前,敲击荆棘!
所以,你还是修改代码,如期完成了上述功能。
就和下面的图片一样。
甚至,为了这次功能的变动,你再次微调了模块之间的关系。让每一个箭头都从左往右流动。
工期紧张,但功能依旧完善。
模块众多,但结构依然清晰。
“每一个箭头都从左往右流动”这一点被打破,还是在开发某次重要的功能时。
那次功能复杂,时间也紧张。
“不可能因为这次功能重构整个系统结构”,你这样告诉自己。
“是的,即使重构,业务团队也无法将旧有的功能全部回归测试”,你再次肯定到。
但是你依旧努力做到最好。
系统演进成了下面的样子。
岁月经年,没有那个团队会固守不变。
时光荏苒,难有那个系统会止步不前。
你也曾去负责其他系统,
也曾再次接手过这个系统。
系统也曾增加许多模块,
也曾废弃很多模块。
终于,
系统演化成了下面的样子。
凌乱,但能跑!
有一天,
团队来了一个新同事。
他看完这个系统结构后,随口说了一句:
“这系统是谁写的啊?一坨屎!”
你心头一颤!
想起了系统的每一个版本,每一次变动。
想起了曾经功能简单的系统,
想起了曾经秀发茂密的自己。
你想反驳,却又不知从何说起。
最终,
你只是走过去,轻拍了他的肩。
无言。
可以访问个人知乎阅读更多文章:易哥(https://www.zhihu.com/people/yeecode),欢迎关注。