谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

バリデータ、どっちが好き?

http://d.hatena.ne.jp/cero-t/20070704/1183568720
これを作り始めましたが、
ちょっと悩ましい所があったので、皆さんに聞いてみます。
どちらの方が好きでしょうか?


A. 設定も含めて、全て<s:validator2>タグに書いてしまうタイプ。

<input type="text" id="year" m:label="年" m:value="#{xxxDto.year}" />
<input type="text" id="month" m:label="月" m:value="#{xxxDto.month}" />
<input type="text" id="day" m:label="日" m:value="#{xxxDto.day}" />
<span m:inject="s:validator2" m:binding="#{dateValidator}"
    m:targetId="year,month,day" m:eventId="doXxx" m:label="生年月日" />
<span m:inject="s:validator2" m:binding="#{longRangeValidator}"
    m:targetId="year" m:eventId="doXxx" m:label="年"
    m:minimum="1900" m:maximum="1987" />
<span m:inject="s:validator2" m:binding="#{何か別のバリデータ}"
    m:targetId="year" m:eventId="doXxx" m:label="年" />


B. 各バリデータは、<s:validatorCaller>の子タグとして差し込むタイプ。

<input type="text" id="year" m:label="年" m:value="#{xxxDto.year}" />
<input type="text" id="month" m:label="月" m:value="#{xxxDto.month}" />
<input type="text" id="day" m:label="日" m:value="#{xxxDto.day}" />
<span m:inject="s:validatorCaller" m:targetId="year,month,day" m:eventId="doXxx" m:label="生年月日">
    <span m:inject="s:validator" m:binding="#{dateValidator}">
</span>
<span m:inject="s:validatorCaller" m:targetId="year" m:eventId="doXxx" m:label="年">
    <span m:inject="s:validator" m:binding="#{longRangeValidator}"
        m:minimum="1900" m:maximum="1987"/>
    <span m:inject="s:validator" m:binding="#{何か別のバリデータ}" />
</span>


比較すると、、、

  1. タグのネストの少ない度 : A > B
  2. 記述の重複が少ない度 : A < B
  3. 元と大きな変更がない度 : A < B
  4. ぱっと見わかりやすい度 : A > B
  5. <s:validator2>の予約語(属性名)と被った属性を持てる度 : A < B


Bの方が記述量が少ないのですが、
Aの方が、何をやっているのかはっきりします。


どっちにしましょうかね。


私は、分かりやすさ&悩みの少なさで、Aに賛成です。


別に相対するものじゃないんだから、両方作れって話も・・・