找到了这个最佳实践,甚至在RubyMine中进行了检查:"每个控制器和视图之间只共享一个或两个实例变量." (Ruby on Rails代码质量检查表)
例如,建议的方法是什么 - 传递两个数组及其在控制器中计算的总值,这会产生4个实例变量?或者传递给Javascript数据表:数据,总项目,显示的总项目?
M. *_*her 16
我认为最明智的方法是从许多简单的对象转到很少的复杂对象.
比方说,现在你有三个独立的变量:
现在,不是使用3个单独的实例变量(一个Array,两个Fixnum),而是创建一个Hash包含所有这三个变量的变量,或者可能定义一个新的类来响应total_items您可以在视图中调用的方法.
事实上,作为一个例子,will_paginate确实是这样的:项的集合分页不是简单地表示为一个数组,但作为一个WillPaginate::Collection对象,它响应的方法,例如current_page,total_pages,total_entries等等,这是比具有独立的变量更自然,因为它可以更准确地将您感兴趣的信息与您的视图之间的关系进行映射.
根据经验,我建议任何与密切相关的信息相对应的东西应该总是在一个实例变量中,但是由于这些最佳实践,任何根本不相关的东西都不应该"强制"成一个变量.每个规则都有一个例外,因此,例如,如果您在视图中确实有5个不同的组件彼此完全无关(很少见),盲目遵循最佳实践可能不是最好的主意.
底线:了解这些规则背后的想法,你会知道该怎么做.
| 归档时间: |
|
| 查看次数: |
3648 次 |
| 最近记录: |