我有多个类(4-5)使用相同的常量值,比如PI = 3.14。在Ruby和RoR应用程序中定义这个常量的最佳方式是什么?
我是否用给定的常量构造一个模块,并将其包含在所有使用它的类中?
什么是最佳实践和标准的Ruby或RoR方式?
发布于 2017-11-07 17:01:19
您可以只在一个地方定义它,然后直接引用它,而不是到处都包含这个常量
# config/initializers/constants.rb, for example.
module Constants
PI = 3.1415926535897932384626433832795028841971
end
# app/models/circle.rb
class Circle
attr_reader :radius
def area
Constants::PI * radius ** 2
end
end发布于 2017-11-07 17:39:19
在给定MyApp的情况下,您的所有应用程序类都应该在一个名称空间下。
因此,所有共享常量都可以在MyApp模块中声明:
module MyApp
APP_CONST_1 = 42
APP_CONST_2 = 3.14
# ...
end
class MyApp::User
def the_answer
MyApp::APP_CONST_1 # 42
end
end发布于 2017-11-07 17:00:49
开始使用关注点吧,RubyOnRails有一个漂亮的模式来重构代码。
看看这个:
http://vaidehijoshi.github.io/blog/2015/10/13/stop-worrying-and-start-being-concerned-activesupport-concerns/
https://stackoverflow.com/questions/47153612
复制相似问题