4

StringTemplateの紹介で次のことに気づきました。

StringTemplateは、オブジェクトo内のプロパティpを探すことによってopを解釈します。ルックアップルールは言語ポート間でわずかに異なりますが、一般に、古いJavaBeansの命名規則に従います。StringTemplateは、最初にgetP()、isP()、hasP()メソッドを探します。これらのメソッドの1つが見つからない場合は、pというフィールドを探します。

これは、この論文ではうまくいかないようです:http ://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf

これは、基本的にモデルがメソッドを呼び出すことによってデータをプルできるようにすることで、モデル/ビューの分離の違反への扉を開きませんか?悪いプログラマーは、副作用を引き起こすメソッドgetP()を書く可能性があります。STは、ここで関心の分離を「厳密に」どのように実施しますか?

4

1 に答える 1

6

Velocity、FreeMarker、StringTemplate、JSP / JSF式言語など、あらゆるテンプレート言語がまさにそれを実行します。

関心の分離は、ビューではなく、プログラマーが注意すべきことです。人々は、副作用のないget / is / hasメソッドを作成して、誰もがこれを気にすることなくそれらを呼び出すことができるようにすることが期待されています。そのため、これらのメソッドはアクセサーであると想定されており、ミューテーターであると想定されるsetSomethingで通常呼び出されるメソッドがあります。

誰かが独自のクラスを作成し、副作用のあるgetSomethingメソッドを定義することを決定した場合、それらは常識に反し、ツールはオブジェクトを処理するときにすべての仮定をとることは想定されていません。常識を尊重し、他の人が書くようにコードを書きます。

于 2011-07-31T03:23:46.827 に答える