Design patterns 修复了一件事,弄坏了另一件事。图案的名称是什么?

Design patterns 修复了一件事,弄坏了另一件事。图案的名称是什么?,design-patterns,architecture,anti-patterns,Design Patterns,Architecture,Anti Patterns,你如何称呼系统的模式或架构,当你在一个地方修复某个东西时,你会注意到另一个地方有东西坏了 我没能给它起个简明的名字。这是当你对自己或其他人做的事情是否正确失去信心时系统的情况。你觉得自己对复杂性失去了控制。在最坏的情况下,在这种架构中,如果没有彻底的测试覆盖率或严格的测试,您就不敢做任何更改。你开始讨厌你的工作,因为每一个微小的代码更改都与大量的时间和精力有关,你开始通过静态输入来学习语言,或者只是开始做更多的“愚蠢的编码”,即“聪明的思考”,希望报道会提醒你错误 在处理软件开发中的这个问题之前

你如何称呼系统的模式或架构,当你在一个地方修复某个东西时,你会注意到另一个地方有东西坏了

我没能给它起个简明的名字。这是当你对自己或其他人做的事情是否正确失去信心时系统的情况。你觉得自己对复杂性失去了控制。在最坏的情况下,在这种架构中,如果没有彻底的测试覆盖率或严格的测试,您就不敢做任何更改。你开始讨厌你的工作,因为每一个微小的代码更改都与大量的时间和精力有关,你开始通过静态输入来学习语言,或者只是开始做更多的“愚蠢的编码”,即“聪明的思考”,希望
报道会提醒你错误

在处理软件开发中的这个问题之前,需要以简洁的方式对其进行定义。也许你知道行话文件中的一个条目,或者你的团队已经创造了这个定义


需要用这个词来描述糟糕的架构移动。它通常被称为
意大利面代码
臭味代码
,但它不是仅支持此
漏洞修补
开发过程的系统的精确描述。这里的主要特点是,
每次修复都可能是新问题的原因。有时这个过程是无止境的,因为新人看不到真正的原因,在路上一次又一次地重复错误,重新发明轮子等等。

Michael Feathers在他的“有效地处理遗留代码”中对此有一些优点

他提到了一个反模式“散弹枪手术”,它显然与您描述的系统相匹配:如果您想引入更改,您必须触及系统中的许多不同位置,因为概念设计不明确,也没有隔离。通常,复制粘贴组织会导致当前系统

此外,他还说“使用代码基本上有两种方法”:

  • 编辑并祈祷
  • 覆盖和修改
他总结了编辑和祈祷的方法:

这是行业标准,包括以下步骤:

  • 仔细计划变化
  • 理解要修改的代码
  • 开始改变
  • 四处看看是否一切正常(这一步非常重要)
  • 重复3和4直到完成
  • WEWLC归结为将所有没有测试覆盖率的代码都归咎于遗留代码。与“cover and modify”不同,您有(单元)测试


    最后,他关于遗留代码困境的观点是:“在进行更改之前,我们应该进行测试,但为了进行测试,我们必须更改代码。”

    虽然在实践中经常出现,但没有通用名称,一个全新的编程规程的发明主要是因为这些错误:单元和集成测试

    我称之为“脆弱的”或“脆弱的系统结构”,没有自动测试


    HTH Thomas

    这个问题似乎离题了,因为它属于程序员。stackexchange。@Fendy,这很好。从这个意义上讲,它被解释为“当每一个新的补丁引入两个以上的bug时”。但我更困惑的是,你怎么称呼这种特殊情况?当对一个bug的修复恢复对另一个bug的修复时。Bug不相乘——它们更像<代码>互斥 FieldL.只考虑不正确工作的任何东西作为bug,要么是破坏它,要么恢复修复。然后它匹配了Hydra代码。@Fendy,我有一个软件系统,由于状态矛盾,它经常失去平衡。人们看不见它,不断修补一边,然后是另一边,然后是第一面。这些都是已知的老错误,无法同时修复,而且过于复杂,难以解释。它不是不断产生新bug的Hydra code。这是体系结构的一个无法修复的“特性”。体系结构中是否存在相互排斥的
    bug
    。这一术语的实际结果应该是
    相互冲突的列表。通常是
    something vs something
    的情况,描述每种情况下可能的替代方案和选择是应用程序体系结构的关键组成部分。只是不清楚如何称呼这些相互冲突的案例。