Language agnostic 寻找什么的具体例子';猴子修补有什么问题吗?

Language agnostic 寻找什么的具体例子';猴子修补有什么问题吗?,language-agnostic,monkeypatching,Language Agnostic,Monkeypatching,我听过很多关于猴子打补丁是多么的酷,或者说猴子打补丁是地球上最糟糕的事情。我的想法是,如果您编写一些代码,然后其他人更改其功能以执行其他操作,这是不好的。但我想找一个具体的例子,说明这可能会伤害到你。我的意思是,我一直在写代码,然后我的同事对代码进行修改。那么,猴子打补丁和那个有什么不同呢可能发生的最坏情况是什么?猴子补丁会从对象的其余部分和对象的文档中隐藏对对象的更改。使用该对象非常容易,检查它的文档以确保它符合您的期望,然后稍后发现它不是那样工作的 如果你在一个开发人员频繁变动的项目上工作,

我听过很多关于猴子打补丁是多么的酷,或者说猴子打补丁是地球上最糟糕的事情。我的想法是,如果您编写一些代码,然后其他人更改其功能以执行其他操作,这是不好的。但我想找一个具体的例子,说明这可能会伤害到你。我的意思是,我一直在写代码,然后我的同事对代码进行修改。那么,猴子打补丁和那个有什么不同呢可能发生的最坏情况是什么

猴子补丁会从对象的其余部分和对象的文档中隐藏对对象的更改。使用该对象非常容易,检查它的文档以确保它符合您的期望,然后稍后发现它不是那样工作的

如果你在一个开发人员频繁变动的项目上工作,这尤其糟糕,你需要更加担心如何让新开发人员跟上你的代码基础。新开发人员将不会意识到您的补丁的细微差别,因此您将很难从中获得好的代码


至于可能发生的最坏情况,如果你的应用程序中有bug,最坏的情况是什么?有人会因为一件设备的功能不正确而死亡吗?您是否会因为向某人发送错误的账单或向其帐户收取太多费用而破坏其信用评级?

猴子补丁会从对象的其余部分和对象的文档中隐藏对对象的更改。使用该对象非常容易,检查它的文档以确保它符合您的期望,然后稍后发现它不是那样工作的

如果你在一个开发人员频繁变动的项目上工作,这尤其糟糕,你需要更加担心如何让新开发人员跟上你的代码基础。新开发人员将不会意识到您的补丁的细微差别,因此您将很难从中获得好的代码


至于可能发生的最坏情况,如果你的应用程序中有bug,最坏的情况是什么?有人会因为一件设备的功能不正确而死亡吗?你会因为给某人寄错账单或向他们的账户收取太多费用而破坏他们的信用评级吗?

这取决于环境,也就是说,你是否与其他人共享代码。但是,考虑一下可以做的事情,例如SimultTalk:改变<代码> +<代码>操作符的含义。如果我引入一个
+
函数,比如说,从一个参数中减去另一个参数,事情就会以一种华丽而意外的方式发生。

这有点取决于环境,也就是说,你是否与其他人共享代码。但是,考虑一下可以做的事情,例如SimultTalk:改变<代码> +<代码>操作符的含义。如果我引入一个
+
函数,比如说,从一个参数中减去另一个参数,事情就会以华丽而意外的方式发生。

好吧,这取决于你所说的

如果你写一些代码是不好的 然后其他人改变了它的名字 做其他事情的功能


要求是什么?现在和以前。如果需求发生了变化,并且生成的代码集必须发生变化,这称为维护或增强。在现实世界中,我很少能遇到一段代码,在那里“猴子补丁”是有效的,尽管它也很大程度上依赖于谁编写了代码、多长时间前等等。太多的变量无法给出真正有效的答案。简言之,如果这是你需要做的事情,在客户想要的时候给他们想要的,那么这可能是一个很好的“哦,最好去做”。这一切都是关于你的观众。

好吧,这真的取决于你所说的

如果你写一些代码是不好的 然后其他人改变了它的名字 做其他事情的功能


要求是什么?现在和以前。如果需求发生了变化,并且生成的代码集必须发生变化,这称为维护或增强。在现实世界中,我很少能遇到一段代码,在那里“猴子补丁”是有效的,尽管它也很大程度上依赖于谁编写了代码、多长时间前等等。太多的变量无法给出真正有效的答案。简言之,如果这是你需要做的事情,在客户想要的时候给他们想要的,那么这可能是一个很好的“哦,最好去做”。这一切都是关于你的观众。

编程已经从需要理解全局状态才能理解局部行为的编码实践中缓慢而稳定地走出来。一些例子:

  • Gotos使得对控制流进行推理变得更加困难,因为您可能需要查看 在很远的地方编写代码,查看如何到达特定行
  • 全局变量也不受欢迎,因为程序的任何部分都可以更改影响任何其他部分的状态
  • 函数式编程是受支持的,因为它意味着您不需要担心函数之外的任何状态,就可以理解函数的行为

猴子补丁意味着如果不查看程序中的每一行代码,就无法知道一行代码的作用。快速完成某些事情可能很有用,但这会使大型程序无法理解。由于如此多的大型程序都是从小型程序开始的,所以猴子补丁可能是您想要摆脱的习惯。

编程已经缓慢但稳定地远离了需要了解全局状态才能了解局部行为的编码实践。一些例子:

  • Gotos使得对控制流进行推理变得更加困难,因为您可能需要查看 在很远的地方编写代码,查看如何到达特定行
  • 全局变量也不受欢迎,因为程序的任何部分都可以更改影响任何其他部分的状态。