Sco*_*aad 43 language-agnostic
你有没有经历过一段代码来做一个看似简单的改变然后意识到你刚刚进入一个值得认真关注的荒地?这通常会在官方的FREAK OUT时刻跟进,在那里,重写一切在视线中的压倒性感觉开始蔓延.
重要的是要注意,这个糟糕的代码不一定来自其他代码,因为它可能确实是我们过去编写或贡献的东西.
很明显,有一些严重的代码腐烂,可怕的架构等需要处理.与此问题相关的真正问题是,现在不是重写代码的合适时机.可能有很多原因:
那么我们应该如何平衡不断改进代码的责任,同时又是一个负责任的开发人员呢?我们如何避免对破窗理论做出贡献,同时也意识到行动以及可能造成的潜在鲁莽行为?
很棒的答案!在大多数情况下,似乎有两种思想流派:
知道是否有更多人认为存在任何平衡将会很有趣.
Chr*_*rts 25
我是制作名单的忠实粉丝!
一旦这种冲动让你重新写东西 - 花10分钟制作一份需要重写的东西清单.关注所有需要注意的代码,并将其列入需要注意的代码中.
希望在相对较短的时间内,您将拥有以下两种情况之一:
Chr*_*ris 13
对我来说这个最令人难忘的项目发生在大约4年前,当时我被叫到一个远程办公室"帮助"一个项目,该项目在一周内完成,主要向客户介绍并且根本没有工作.该项目主要是向印度提供支出,IMO项目管理失败导致大量意大利面条代码过于分散,无法以目前的形式正常运作.
经过一整天的审查,我向管理层提出了我的意见,即项目只需要批量重构和重组,否则它将无法正常运行.这次讨论的结果是6天20小时工作/ 4小时睡眠,其中2个我实际上在公司大厅的沙发上睡觉,因为开车回酒店时浪费了时间.
代码的主要改进包括:
大多数原始代码都留在原地,但只需移动和重组/重构,以使其长期可持续.这周是地狱吗?当然.它是否使项目更成功?是的.
我不能忍受意大利面条代码,我经常捐出自己的个人时间来解决它.
Ori*_*rds 10
如何克制自己的压倒性冲动重写一切?
变老*
因为这发生在我身上,我逐渐失去了重写一切的冲动.为什么?
*(如果你没有空闲时间变老,更多经验也可能是合适的替代品)
重写的冲动是正义的,条件是:
也就是说,您必须在重写过程与遗留代码的度量稳定性之间取得平衡.
"如果没有损坏,请不要修理它";)
你完全正确的是,正确的时间和错误的时间来重写(和破坏稳定)代码.
让我想起了一个我认识的工程师,他有一个潜水的习惯,并且在他想要的时候进行重大改写.这促使QA工作人员将他的产品推上了墙 - 如果他报告了一些关于微不足道的错误,那么这个错误就会得到修复,但是工程师在修复这个错误时会注意到的东西的重大改写会引入另外五个新错误,其中然后质量保证人员需要追踪.
因此,一种让自己能够改写重写的诱惑的方法就是在质量保证工程师的脚下走一步,他必须测试,诊断并报告所有这些新错误.也许甚至可以让自己去QA部门几个月,以了解他们所做的工作类型(如果你从未这样做过).
另一个建议是为自己制定一条规则来编写注释来描述任何变化.当您检查源代码控制的代码更改时,也许发布这些注释.您可能有动力以这种方式尽可能减少更改.
只是不 - 兔子洞总是太深.进行任何小的局部更改,使得该位置比您发现的更干净,但是当您处于警戒状态并且有足够的时间进行刻录时,请进行大量重构.
在sourcemaking.com上以小阶段解决大型重构问题的一个很好的启动:
你必须像汉塞尔和格莱特尔一样啃食,今天一点点,明天多一点