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