为什么程序员会有代码能跑就不要动的观点?
某乎网友:ze ran
取决于这个项目的owner是谁。
如果owner 是自己或我们组,不论最初谁写的,跑路了还是飞升了,只要是系统出了问题,我们要负责,那就不能懵懵懂懂。能跑,却不知道为什么能跑,那可不行。根据代码质量,项目生命周期,未来可能的需求,一要读懂,二要能动。单单能跑是不够的。
如果owner是别人,自己只是帮着做个小功能,只负责一小段代码,这样能跑就行,不要乱动,尤其是新人,新手一优化,系统就会炸,只是不知道什么时候炸而已。
某乎网友:神们自己
因为那些"能跑就不要动”的代码,都是祖传的屎山代码。因为那些程序员都回想起了,被屎山支配的恐惧,与被困在屎坑中的屈辱。
驾驭屎山的唯一方法,不是重构,而是不重构。
当然,对于血气方刚的少年,我知道,你很可能觉得我在扯淡,屎山有什么好怕的,重构就是了。
明知山有屎,偏向屎山行。来,壮士,干了这碗屎,我绝不会拦着你。
某乎网友:无念
直接说个现实发生的事:新来的程序员小哥觉得代码不规范,内存释放的模块很混乱。这可能有隐藏的风险。接下来,他做了整合,把内存释放进行了模块化,专门整好了。代码变的更优质了,对吧?
到这里算是好的。然后过几天,就出事了,生产出现重大故障。系统内存泄漏,系统崩了,影响客户使用。客户投诉,扣钱。然后整个项目组开始大排查。排查到最后,就是这个内存释放的优化,有个位置漏了,没改到。但是其他位置全改掉了。然后这个没改到的位置,内存长期不释放。
好了,内存爆了,内存泄露,系统崩溃。就是这个优化,导致了重大故障。然后全公司通报批评。要求项目组整改。并且出检讨。现在能理解了吗?
代码能跑,就别改。你改了,说不准会出什么问题。
某乎网友:第七泛式
不知道你们有没有碰见过那种刚好可以”互补自洽“的bug....
举一个非常简单的例子,就是一个加减计算器的功能,有A,B,C三处bug,A处多加了3,B处多减了2,C处多减了1,然后三处bug互补,运行,测试时得到的正确的输出结果。
这段代码稳定运行了很多年,有一天你接手去检查这种上古代码时,你可能敏锐的发现A处代码有明显的逻辑错误,然后你把A处的bug给改了,但是B和C处的bug还存在,然后一运行整个系统就崩了,人都傻了。然后你一顿排查,花了很久时间好不容易发现了B处的bug,给他改了,一运行发现系统输出错得更离谱了,你可能心态就炸了。
当然这只是个最简化的举例说明,实际情况比这复杂得多。说多了都是泪...
某乎网友:图啥
某乎网友:哒哒王
因为…
某乎网友:你蓝一米五
你就说这里放一个空的 html 里面就这么一句话,你感动么,我挺感动的,但是不敢动
某乎网友:Un1verse.J
你看看这么多年微软敢动那个控制面板么
某乎网友:kingsley
能跑的意思就是,无论是质量还是性能,都已经达到要求。
那么在这个基础上,客户不会因为你写的代码十分优雅而多给钱。
来源:https://www.zhihu.com/question/491132556