Language agnostic 如何约束一个';她有没有从重写一切的强烈欲望中解脱出来? 安装程序
您是否有过这样的经历:进入一段代码进行看似简单的更改,然后意识到您刚刚踏入了一片值得认真关注的荒地?这通常会伴随着一个官方的“疯狂”时刻,在那一刻,重写眼前的一切的压倒性感觉开始蔓延 需要注意的是,这段糟糕的代码不一定来自其他人,因为它可能确实是我们过去编写或贡献的东西 问题 很明显,有一些严重的代码腐烂、可怕的架构等问题需要处理。与这个问题相关的真正问题是,现在不是重写代码的正确时间。原因可能有很多:Language agnostic 如何约束一个';她有没有从重写一切的强烈欲望中解脱出来? 安装程序,language-agnostic,Language Agnostic,您是否有过这样的经历:进入一段代码进行看似简单的更改,然后意识到您刚刚踏入了一片值得认真关注的荒地?这通常会伴随着一个官方的“疯狂”时刻,在那一刻,重写眼前的一切的压倒性感觉开始蔓延 需要注意的是,这段糟糕的代码不一定来自其他人,因为它可能确实是我们过去编写或贡献的东西 问题 很明显,有一些严重的代码腐烂、可怕的架构等问题需要处理。与这个问题相关的真正问题是,现在不是重写代码的正确时间。原因可能有很多: 当前在发布周期的中间,因此任何更改都应该是最小的。 现在是凌晨2点,大脑开始关闭 这似乎会
- 现在是凌晨2点,大脑开始关闭
- 这似乎会对日程安排产生不利影响
- 兔子洞可能比我们现在的眼睛所能看到的要深得多
- 等等
更新 伟大的答案!在大多数情况下,似乎有两种学派:
想知道是否有更多的人觉得存在任何平衡是很有趣的。糟糕的代码不是完全可以避免的,但它可以通过适当的抽象来隔离。如果它确实是荒地,也就是说,周围没有垃圾填埋场,那么专注于设计过程比试图让人们写出完美的代码要有效得多。重写的冲动是正当的,前提是:
- “冻结”现有代码(带有标签)
- 您可以在单独的分支中开始重写尝试
- 您首先准备一些单元测试,以确定当前行为,并确保重现现有功能
“如果它没有坏,就不要修理它”;) 别这样-兔子洞总是太深了。进行任何小的局部更改,使地方比您发现的更干净,但将大的重构留给您保持警觉并有足够时间燃烧的时候 这是一个很好的开端,可以在以下几个阶段处理大重构: 你必须像汉瑟和 格雷特尔和小口咬着边缘,一个 今天少一点,明天多一点
我发现,花两个月的时间修复我“无害”的重写引起的bug,足以治愈我在没有明确授权/项目计划的情况下做这类事情的冲动。我非常喜欢制作列表 一旦这种冲动让你重新写东西——花10分钟列出需要重新写的东西。按照需要注意的代码中的所有小巷进行操作,并列出这些小巷 希望在相对较短的时间内,您将有两件事:
- 一个非常长的列表,完全让你不想再重写任何东西
- 一份实际上并不长的清单,为什么不放纵自己,重新写一次呢李>
(针对不良气味中的每种气味(){
打印气味。名称;
}
while(door()){
}
对我来说,这类最难忘的项目发生在大约4年前,当时我被叫到一个远程办公室“帮忙”由于一个项目将在1周内向客户进行主要演示,但尚未开始工作。该项目主要是在印度和国际海事组织的海上进行的,一次项目管理失败导致大量意大利面代码过于零碎,无法以目前的形式正常工作 经过一整天的审查,我向管理层提出了我的观点,即该项目只需要大规模的重构和重组,否则它将永远无法正常工作。讨论的结果是6天20小时的工作/4小时的睡眠,其中2天我实际上是在公司大厅的沙发上睡觉,因为在工作时浪费了时间开车回旅馆 该守则的主要改进包括:
- 命名标准的应用
- 转入源代码管理
- 构建过程的开发
- 单个组件的文档