StringTemplate нарушать разделение? - PullRequest
4 голосов
/ 22 июня 2011

Я заметил следующее во введении для StringTemplate:

StringTemplate интерпретирует o.p по ищет свойство р внутри объекта о. Правила поиска немного отличаются между языковыми портами, но в целом они следуют старым именам JavaBeans условность. StringTemplate ищет сначала методы getP (), isP (), hasP (). Если не удается найти один из тех, методы, он ищет поле с именем р.

Это не похоже на джайв с этой бумагой: http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf

Разве это не открывает дверь для нарушений разделения модель / представление, по сути позволяя модели извлекать данные, вызывая метод? Плохой программист может написать метод getP (), который вызывает побочные эффекты. Как ST "строго" обеспечивает разделение интересов здесь?

1 Ответ

6 голосов
/ 31 июля 2011

Каждый отдельный язык шаблонов делает именно это, Velocity, FreeMarker, StringTemplate и язык выражений JSP / JSF.

Разделение задач - это то, о чем должен заботиться программист, а не точка зрения. Ожидается, что люди напишут методы get / is / has без побочных эффектов, чтобы каждый мог их вызывать, не заботясь об этом. Вот почему эти методы должны быть средствами доступа, и есть методы, обычно вызываемые с setSomething , которые должны быть мутаторами.

Если кто-то пишет свои собственные классы и решает определить метод getSomething , который имеет побочный эффект, он идет вразрез с общим убеждением, и инструменты не должны принимать каждое отдельное предположение при работе с объектами Они просто надеются, что люди будут умны, будут уважать здравый смысл и писать код, как все остальные пишут.

...