Ahm*_*aid 8 language-agnostic methodology
如果要求经常变化并且您希望及时交付代码,那么用于克服意大利面条的最佳解决方案或方法是什么?
Seb*_*etz 18
你对意大利面条代码的定义是什么?对我来说,意大利面条代码是一个太长,非结构化和混乱的方法/功能.这不会因需求变化而发生,而是由于开发人员的懒惰.如果你因为事情已经改变而必须重写一个方法,你也可以直接清理它而不需要太多开销.
如果你的意思是设计糟糕的对象结构,那么你就是对的.如果需求变化太快,您将很容易得到不再符合预期的类,不良对象层次结构等.
有一些tipps可以避免这种情况:
一开始不要过度设计.尽量使您的方法,类和类层次结构尽可能简单,以减少更改.
在需求发生变化之后,不要立即开始实现它,而是退后一步,看看在新功能适合之前是否需要更改代码结构.
与您的客户沟通,更改需要一些时间.如果您知道他们知道更改需求也意味着代码结构发生了变化,那么将代码压缩到现有结构中的压力就会减小.
编码时始终重构.根据我的经验,将重复代码从多个位置移动到单个方法或类中的小型重构最有效地保持代码清洁.始终注意代码气味并尽快删除它们,以使您的工作更轻松.这需要一些经验,但现在是开始训练的合适时间:-)
就像krosenvold所说的那样,通过在代码中添加测试用例来消除对大变化的恐惧,从而使其安全.我自己在一个大型遗留系统上工作过,我知道这种恐惧以及没有安全网的工作感觉.当您首先使用安全网时,进行必要的更改变得不那么冒险了.
我认为关键点之一是编写易于更改的代码。这通常有利于具体的而不是抽象的。还有一些设计模式往往会通过代码构建非常大的支柱。这些支柱很容易在错误的地方进行更改,因为您害怕更改代码中那些您真正应该更改的重要核心部分。
测试覆盖率确实是一个非常好的帮手,可以让您进行无所畏惧的重构。降落伞是区分疯狂和理智的试飞飞行员的关键。