バリデータ、どっちが好き?
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>
比較すると、、、
- タグのネストの少ない度 : A > B
- 記述の重複が少ない度 : A < B
- 元と大きな変更がない度 : A < B
- ぱっと見わかりやすい度 : A > B
- <s:validator2>の予約語(属性名)と被った属性を持てる度 : A < B
Bの方が記述量が少ないのですが、
Aの方が、何をやっているのかはっきりします。
どっちにしましょうかね。
私は、分かりやすさ&悩みの少なさで、Aに賛成です。
別に相対するものじゃないんだから、両方作れって話も・・・