【发布时间】:2020-10-23 12:17:24
【问题描述】:
我们有一个 gem,我们有一个方法 #display_name,如果定义了 I18n gem,则此方法返回本地化名称,否则回退到 default_display_name。
以下是当前的实现:
def display_name
if Module.const_defined?(:I18n)
localized_display_name
else
default_display_name
end
end
我们希望在每次调用Module#const_defined? 时重构它。
以下是建议的实施。
if Module.const_defined?(:I18n)
def display_name
localized_display_name
end
else
def display_name
default_display_name
end
end
从表面上看,这看起来不错,但我们担心现在我们假设 gem 的 require 顺序。所以,我的问题是,gem 是否应该假设另一个 gem 已加载(在本例中为 I18n),或者它应该像当前实现一样懒惰地检查。
欢迎任何其他关于重构/优化的建议。提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby rubygems bundler