在Rails视图中定义常量只是为了使用一次是否合适?

时间:2018-01-04 04:06:38

标签: ruby

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

  • "Some quite long string"
  • quiteLongMethodNameHere(otherConstant)

为了缩短它们,我将它们包装在一个常量/变量中:

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

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

这是一个好习惯吗?或者我应该将值放在param上而不将其包含在变量/常量中?

2 个答案:

答案 0 :(得分:1)

无论字符串的长度如何,将它赋给变量/常量是有意义的,而不是在视图文件中直接引用它。如果是文本,将它放在i18n文件中会更有意义。

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

答案 1 :(得分:1)

这是个案决定。你想要平衡有时相互竞争的清晰和简洁的利益。对我来说,这取决于两种形式的表现力。如果长方法名称清晰,准确且富有表现力,那么我对使用中间变量来保持其结果的兴趣不如不是。

在其他长形式表达不太常见的情况下,我会经常使用中间变量作为"生活"文档,即使它们仅用于下一行代码。这更明确地向读者展示了您的意图(可能是其他人,或者您将来某个时间点)。 我发现中间变量比代码注释要好得多,因为代码注释可以更容易地过时,并且在代码中进行澄清使其可用于调试器等。创建额外变量的性能损失很小,并且仅在最重要的不寻常的情况。

另一个因素是,如果您正在聚合包含这些函数调用和值的事物(在数组,散列等中),那么使用中间变量会使代码更整洁,并且可能更容易理解,因为您可以自定义名称在该集合的背景下最有意义。