[Seasar-user:20617] Re: [Teeda] ネストしたプロパティの対応について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2011年 2月 24日 (木) 18:00:22 JST


小林 (koichik) です.

Date: Thu, 24 Feb 2011 15:51:02 +0900
From: あきら <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:20616] Re: [Teeda] ネストしたプロパティの対応について

> >> せっかくなので、コミッタとして参加してもらったほうがよさそうですね。
> > 私も賛成です。
> > あきらさん、いかがでしょうか?
> 
> ぜひお願いいたします。
> akira で昔にトラッキングにIDは作成していました

うーん、自分としては

・「この機能を追加するためコミッタになってもらう」のは反対
・「この機能を追加しなくても、Teeda に継続的に関わってもらうため
    コミッタになってもらう」のは大歓迎

なのですが、どちらでしょう?


で、この機能に関しては、現状では見送りたい気分です。理由は二つ。

理由の一点目は仕様に関して。
ネストしたプロパティの区切りにアンダースコアを使っていますが、
アンダースコアは Java では識別子として使える文字です。
つまり、アンダースコアを含んだプロパティ名は正しいということです。
それを区切り文字として使うことは、仕様として好ましくありません。

Dto のプロパティにアンダースコアを使うのはまれだとは思いますが、
Seasar2 (SMART deploy) ではサブパッケージの区切りに使っているように、
Teeda 利用者でも特別な意味合いで使っている可能性はあるわけです。

そうなると、たとえば HTML でaaa_bbb_ccc と書かれた場合、

aaa_bbb_ccc
aaa_bbb.ccc
aaa.bbb_ccc
aaa.bbb.ccc

のいずれにも解釈できて、現状の実装では最初と最後のだけ使えるのかな?
軽くしかみてないから不確かですが、曖昧さは排除できないと思います。

HTML の id でネストしたプロパティを表す場合、その区切り文字は

・Java の識別子として使えない
・HTML の id として使える
・JSF の id として使える

文字から選ぶべきです。しかし、使える文字はもう残っていなかったような?
なので、以前検討していたときは -- (ハイフン 2 個) を使うという苦し紛れの
案を考えていました。すっかり放置になってしまいましたが。


理由の二点目は、表示だけでは中途半端ということ。
実は、表示だけなら現状でも JSF タグを使って可能です。

<span id="aaa_bbb_ccc"></span>

と同じことは

<h:outputText value="#{aaa.bbb.ccc}" />

のように書けるはず。
ピュアな HTML ではなくなりますが、te:〜 とか使えばどのみちピュアでは
ないですよね。
<h:outputText> だとボディにプレビュー用の文字を入れられないのかな?
そうするとちょっと面倒だけど

<h:outputText value="#{aaa.bbb.ccc}" /><span id="mockXxx">ほげ</span>

ってなっちゃいますが、まぁ、できないことはないわけです。
そして 1 点目であげた曖昧さはありません。つまり一長一短。

となると、ずっと bug fix しかしていない状況で 1.0.14? 1.1? として
リリースするほどの新機能といえるのかどうか。
そこまでではない、というのが自分の印象です。


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



Seasar-user メーリングリストの案内