Я думаю, что самый разумный способ соблюсти это - перейти от множества простых объектов к нескольким сложным объектам.
Скажем, например, у вас есть три отдельные переменные:
- массив данных
- всего элементов данных
- всего отображаемых элементов
Теперь вместо использования 3 отдельных переменных экземпляра (одна Array
, две Fixnum
), вы можете создать Hash
, который содержит все три из них, или, возможно, определить новый класс, который отвечает на методы, такие как total_items
, которые вы можете вызвать в представлении.
Фактически, как одинНапример, will_paginate
делает что-то вроде этого: разбитая на страницы коллекция элементов не просто представляется в виде массива, а в виде объекта WillPaginate::Collection
, который отвечает на такие методы, как current_page
, total_pages
, total_entries
и т. д.Это более естественно, чем наличие отдельных переменных, так как оно более точно отображает взаимосвязь между информацией, которой вы хотите поделиться с вашим взглядом.
Как правило, я бы предложил, чтобы все, чтоСоответствующая тесно связанная информация всегда должна быть в одной переменной экземпляра, но все, что на самом деле вообще не связано, не следует «принудительно» вводить в одну переменную из-за этих лучших практик.У каждого правила есть исключение, поэтому, если, например, у вас действительно есть 5 различных компонентов, которые не имеют абсолютно никакого отношения друг к другу (что встречается редко), слепое следование лучшим рекомендациям может быть не самой лучшей идеей.
Итог: поймите идею этих правил, и вы будете знать, что делать.