Да, лучше разбить все на пару миллионов мелких частей, чтобы потом, сидя в позе лотоса, блуждать во всем этом сутками, бормоча себе под нос, голосом молодой индианки, мелодичное заклинание: больше часов, больше денег, больше часов, больше денег! अधिक पैसे! :-)
Использовать блоки серверного кода в представлениях (views) можно.
Но сильно сложную логику в представлении лучше стараться не делать. Если все становится сложно, то видимо что-то делается неправильно и следует подумать, как облегчить код. Что-то можно вынести в модель или в частичные (partial) представления, или задействовать секции (section). Есть еще helper-ы, но мне подобное решение не нравятся, т.к. зачастую это сильно все усложняет и нарушают порядок, нужно правильно использовать.
В общем, не стоит сильно увлекаться. А простенькие блоки if, for вполне допустимы, без них никак.
Если элементарная логика, до я думаю это лучше делать во view, чем плодить одни и те же представления отличающиеся несколькими деталями, но иногда перенос логики в хэлпер методы (логика выбора css класса, текстовых названий) позволяет сделать ваш код более тестируемым.