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