Этот разговор напоминает, когда монахи средневековья спорили о том, сколько ангелов может поместиться на конце булавки. Другими словами, он начинает чувствовать себя религиозным, бесполезным и неправильно сфокусированным.
Мини-разгул следует (не стесняйтесь игнорировать):
Если вы не хотите читать дальше ... Мой короткий ответ на вышеуказанную тему:
Я не согласен с логикой без шаблонов. Я думаю об этом как о форме программирования экстремизма. :-): -)
Теперь моя напыщенная речь продолжается в полном разгаре:: -)
Я думаю, что когда вы принимаете множество идей до крайности, результат становится смехотворным. И иногда (то есть эта тема) проблема в том, что мы принимаем «неправильную» идею до крайности.
Удаление всей логики из представления - это «смешно» и неправильная идея.
Отойдите на мгновение.
Вопрос, который мы должны задать себе, - зачем удалять логику? Понятие, очевидно, является разделением интересов . Храните обработку представления как можно более отдельно от бизнес-логики. Зачем это делать? Это позволяет нам обмениваться представлениями (для разных платформ: мобильных, браузерных, настольных и т. Д.), И это позволяет нам легче обменивать поток управления, последовательность страниц, изменения проверки, изменения модели, доступ к безопасности и т. Д. Также, когда логика удаленный из представлений (особенно веб-представлений), он делает представления более удобочитаемыми и, следовательно, более легкими в обслуживании. Я понял это и согласен с этим.
Однако главное внимание должно быть уделено разделению интересов. Не 100% логика без взглядов. Логика в представлениях должна относиться к тому, как визуализировать «модель». Насколько я понимаю, логика во взглядах прекрасна. У вас может быть логика представления, которая не является бизнес-логикой.
Да, в то время, когда мы писали страницы JSP, PHP или ASP практически без разделения логики кода и логики представления, обслуживание этих веб-приложений было абсолютным кошмаром. Поверьте мне, я знаю, я создал и затем поддерживал некоторые из этих чудовищ. Именно на этом этапе технического обслуживания я действительно понял (внутренне) ошибку моих и моих коллег. :-): -)
Таким образом, указом сверху (отраслевые эксперты) стало то, что вы должны структурировать свои веб-приложения, используя что-то вроде контроллера переднего вида (который отправляется обработчикам или действиям [выберите вашу веб-платформу]), и ваши взгляды должны не содержат код Представления должны были стать глупыми шаблонами.
Таким образом, я в целом согласен с вышеуказанным мнением не о специфике пунктов эдикта, а скорее о мотивации эдикта, а именно о стремлении разделить интересы между взглядами и бизнес-логикой.
В одном проекте, в котором я принимал участие, мы пытались довести идею без логики до абсурдной крайности. У нас был собственный шаблонизатор, который позволял бы нам рендерить объекты модели в html. Это была простая система на основе токенов. Это было ужасно по одной очень простой причине. Иногда в представлении мы должны были решить, должен ли я отображать этот небольшой фрагмент HTML ... или нет .. Решение обычно основывается на некотором значении в модели. Когда у вас нет абсолютно никакой логики во взгляде, как вы это делаете? Ну, ты не можешь. У меня было несколько серьезных споров с нашим архитектором по этому поводу. Люди из переднего конца HTML, которые пишут наши взгляды, были полностью обескуражены, когда столкнулись с этим, и испытывали сильный стресс, потому что они не могли достичь своих простых целей. Итак, я представил концепцию простого IF-выражения в нашем шаблонизаторе. Я не могу описать вам облегчение и спокойствие, которое последовало. Проблема была решена с помощью простой концепции IF-Statement в наших шаблонах! Внезапно наш движок стал хорошим.
Так как мы попали в эту глупую стрессовую ситуацию? Мы сосредоточились на неправильной цели. Мы следовали правилу, вы не должны иметь никакой логики в своих взглядах. Это было неправильно. Я думаю, что «эмпирическое правило» должно заключаться в том, чтобы минимизировать количество логики в ваших взглядах. Потому что, если вы этого не сделаете, вы можете случайно позволить бизнес-логике проникнуть в представление - что нарушает разделение интересов.
Я понимаю, что когда вы заявляете, что «у вас не должно быть логики во взглядах», становится легко узнать, когда вы «хороший» программист. (Если это ваша мера добра). Теперь попробуйте реализовать веб-приложение даже средней сложности с вышеуказанным правилом. Это не так легко сделать.
Для меня правило логики во взглядах не так однозначно, и, честно говоря, я хочу, чтобы оно было.
Когда я вижу много логики в представлениях, я обнаруживаю запах кода и пытаюсь устранить большую часть логики из представлений - я стараюсь обеспечить, чтобы бизнес-логика была в другом месте - я пытаюсь разделить проблемы. Но когда я начинаю общаться с людьми, которые говорят, что мы должны убрать всю логику из представления, ну, для меня это просто попахивает фанатизмом, поскольку я знаю, что вы можете оказаться в ситуациях, подобных описанным выше.
Я закончил с моей напыщенной речью. : -)
Приветствия
David