首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法避免多年来的意大利面条式代码?

有没有办法避免多年来的意大利面条式代码?
EN

Stack Overflow用户
提问于 2008-12-15 21:00:13
回答 17查看 12.5K关注 0票数 48

我有过几份编程工作。每一个有20-50个开发人员,项目持续3-5年。

每次都是一样的。有些程序员很聪明,有些很平庸。每个人都有自己的计算机科学学位,每个人都阅读设计模式。意图是好的,人们正在努力编写好的代码,但几年后代码仍然变得像意大利面一样。模块A中的更改突然中断了模块B。总是有一些代码的这些部分,除了编写它的人之外,没有人能理解。改变基础设施是不可能的,向后兼容性问题阻碍了好的功能。有一半的时间你只是想从头开始重写所有的东西。

比我更有经验的人认为这很正常。是吗?一定要这样吗?我能做些什么来避免这一点,或者我应该接受它作为生活的一个事实?

编辑:各位,这里的回复数量和质量给我留下了深刻的印象。这个网站和它的社区摇滚!

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2008-12-15 21:06:17

无情的勤奋与持续的单元测试相结合是防止意大利面条代码的唯一方法。即使这样,它也只是一个创可贴的解决方案。一旦你不再留心,意大利面就出来了。

我经常发现,引入意大利面条代码是因为那天有人只是在偷懒。他们知道有更好的方法去做,但却没有时间。当你看到这种情况发生时,只有一件事要做。

把他们叫出来,让他们把它改成

我发现,在代码评审期间指出更好的方法通常足以让人们继续前进。如果他们检查了它,并且我感觉很强烈,我会自己重构它。

我偶尔会显得有点古怪吗?我相信我会的。坦率地说,我并不介意。我并不是一个笨蛋,我会以最好的社交方式来处理这个问题。然而,让糟糕的代码被签入几乎可以确保我在将来的某个时候必须对其进行调试。我宁可现在就接受一点攻击,然后把正确的代码放进去。

我还觉得单元测试的文化也有助于防止意大利面条代码。对意大利面条代码进行单元测试要困难得多,因为这些代码分解得很好。随着时间的推移,这迫使人们在一定程度上保留他们的代码。

票数 30
EN

Stack Overflow用户

发布于 2008-12-15 23:20:14

我相信避免代码腐烂的关键在于合理的自下而上的设计和实现方法(我非常相信这一点,所以我以它的名字命名了我的企业--想想自下而上!)。这里可以选择的工具有:

contract

  • Layered decoupling

  • Always
  • Programming by
    • 专注于基于重用的框架构建,寻找通用的解决方案
    • Keep frameworks轻量级、简单且专注于

正如其他受访者所建议的那样,您需要及早发现问题。对于绿色开发人员,这意味着指导(结对编程在这里很棒)和审查(代码和设计审查)。对于更资深的开发人员,这意味着要保持警惕。

最重要的是,不要害怕重构。如果重构吓到你了,那你已经完蛋了。如果重构被认为是“糟糕的”,那么你的业务就有问题。

当你修复某件事时,要正确地修复它。我使用术语"fux“来描述一个错误的修复:它只是"fux”你的代码库。

干杯,

票数 15
EN

Stack Overflow用户

发布于 2008-12-15 21:03:47

20到50个开发人员可能是问题所在。这是相当高的,需要大量的管理和资源来保持一切受控。

我会考虑将项目拆分成更小的可重用部分。从核心系统中抽象化某些层。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/369683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档