ruby 中使用类变量是 bad code style 吗?有没有替代品?

2016 年 11 月 21 日
 starvedcat

我现在想给一个类添加一个字符串类变量,但 RubyMine 提示我说不要用 class variable

那应该用什么方法实现这个目的呢?

6862 次点击
所在节点    Ruby on Rails
8 条回复
lightening
2016 年 11 月 21 日
如果是常量没问题。如果是变量,为什么不用 instance variable 呢?
lightening
2016 年 11 月 21 日
先说说你要干什么吧,为什么你觉得自己需要类变量。
starvedcat
2016 年 11 月 21 日
@lightening 是常量,就一个字符串
lightening
2016 年 11 月 21 日
那习惯上用全大写字母表示。这样 RubyMine 应该也就不会提示了。
ryanzyy
2016 年 11 月 21 日
1 )可以使用 class variable 只要你清楚它是怎么运作的
2 )常量大写开头即可,需要写在 class 或 module 层面的 scope
3 )也可以写成: def self.const_str; 'my_string'; end
msg7086
2016 年 11 月 21 日
Constant 没问题。 Variable 会有大问题。
warrenoo
2016 年 11 月 21 日
首先分析你的使用场景到底要的是常量还是变量。

- 如果是常量, 示例如下
class Example
XXX = "xxxx".freeze
end

p Example::XXX

- 如果是变量,最好不要显式的使用类变量,比如 @@xxx = "xxxx",示例如下
class Example
class << self
attr_accessor :str

def do_something
str = "xxxx"
p str
end
end
end

最后,如果这个类有没实例化的需求,以上示例中的 class 完全可以替换成 module 来使用
warrenoo
2016 年 11 月 21 日
代码竟然不能排版。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/321967

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX