gpt4 book ai didi

ruby - 为什么在 Ruby 中使用类变量被视为 'code smell' ?

转载 作者:数据小太阳 更新时间:2023-10-29 06:53:36 25 4
gpt4 key购买 nike

根据 Reek ,创建类变量被认为是“代码味道”。这背后的解释是什么?

最佳答案

您可以在他们关于 Class Variables 的文档中找到:

Class variables form part of the global runtime state, and as such make it easy for one part of the system to accidentally or inadvertently depend on another part of the system. So the system becomes more prone to problems where changing something over here breaks something over there. In particular, class variables can make it hard to set up tests (because the context of the test includes all global state).

本质上,它是全局状态的体现,几乎被普遍认为是evil ,因为它使测试更加困难并导致更加脆弱的类/程序结构。

This Stack Overflow question也可能值得一读,它显示了类变量的主要问题:如果任何类继承自您的类并修改了类变量,则该变量的每个实例都会发生变化,甚至来自父类!可以理解,这让您很容易搬起石头砸自己的脚,所以除非您非常小心,否则最好避免使用它们。

比较类变量和类实例变量也是值得的。 This question有几个很好的例子来说明用法差异,但本质上类变量是共享,而类实例变量是不共享。因此,为了避免不必要的副作用,类实例变量几乎总是您想要的。

关于ruby - 为什么在 Ruby 中使用类变量被视为 'code smell' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40819068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com