Ruby 在Rails视图中定义常量只使用一次好吗?

Ruby 在Rails视图中定义常量只使用一次好吗?,ruby,Ruby,对于HAML文件中的分部,我将传递值为long的参数或名称为long的方法,例如: “一些很长的字符串” quiteLongMethodNameHere(其他常量) 为了缩短它们,我将它们包装在一个常量/变量中: - message = "Some quite long string" - is_important = quiteLongMethodNameHere(otherConstant) = render :some_component, msg: message, is_impo

对于HAML文件中的分部,我将传递值为long的参数或名称为long的方法,例如:

  • “一些很长的字符串”
  • quiteLongMethodNameHere(其他常量)
为了缩短它们,我将它们包装在一个常量/变量中:

- message = "Some quite long string"
- is_important = quiteLongMethodNameHere(otherConstant)

= render :some_component, msg: message, is_important: is_important

这是一种好的做法吗?或者我应该只将值放在
参数上,而不将其包装在变量/常量中吗?

无论字符串的长度如何,都可以将其指定给变量/常量,而不是在视图文件中直接引用它。如果它是一个文本,那么将它放在i18n文件中更有意义


但是,在主视图文件中这样做并不好。如果要执行此操作,请在控制器文件或助手文件中执行。

这是一个逐案决定。你想平衡清楚和简洁这两种有时相互冲突的利益。对我来说,这取决于两种形式的表现力。如果长方法名是清晰、精确和富有表现力的,那么我对使用中间变量来保存其结果的兴趣就会比不使用中间变量的兴趣要小

在其他情况下,如果长格式不太具有表现力,我将经常使用中间变量作为“活”文档,即使它们仅用于下一行代码。这更明确地向读者揭示了你的意图(读者可能是其他人,也可能是未来某个时刻的你)。 我发现中间变量比代码注释好得多,因为代码注释更容易过时,并且代码中的说明使调试器可以使用。创建额外变量对性能的影响很小,并且只有在最不寻常的情况下才有意义


另一个因素是,如果要聚合包含这些函数调用和值的内容(在数组、哈希等中),则使用中间变量可以使代码更整洁,可能更容易理解,因为您可以自定义名称,使其在该集合的上下文中最有意义。

感谢您的深入了解。在RubyonRails中,是否有一些低级优化,比如在C中,编译器翻译a=1;打印(a);-->打印(1)?非常好的问题。据我所知,没有,但是Ruby核心团队一直在进行一些戏剧性的优化,如果他们正在解决这个问题,我也不会感到惊讶。如果在JVM上使用JRuby和Ruby,Java运行时会进行一些运行时优化,但我不确定这是否会扩展到运行Ruby代码。