[seasar-javadoc:509] Re: S2Container

Koichi Kobayashi koichik @ improvement.jp
2006年 8月 10日 (木) 04:30:14 JST


小林 (koichik) です.

Date:    Wed, 9 Aug 2006 01:38:34 +0900
From:    "Makoto Yonezawa" <stratosphire @ gmail.com>
To:      seasar-javadoc @ ml.seasar.org
Subject: [seasar-javadoc:506] Re: S2Container

> すこし息を吹き返しそうです・・・

頑張れぇ〜.

> * 指定されたキーに対応する複数のコンポーネントを検索して返します。

ここはいいと思います.

> * <P>
> * 検索されるコンポーネントについて

些細なことですが,これだけだと Javadoc (HTML) では見出しにならなくて,
空白一つ挟んで次の行が続いてしまいます.
クラスコメントだったら <h4>〜</h4> とか使うところですが,
メソッドコメントで見出しというのもやりすぎ感があるので,
ここは段落を分けるだけで見出しは無しにしましょう.

> * 現在のS2コンテナおよび、インクルードされているS2コンテナの階層から、
> * キーに対応するコンポーネントが最初に見つかったS2コンテナに登録されている
> * 全てのコンポーネントを検索します。
> * </P>

最後のところがちょっと気になるかなぁ.
「全てのコンポーネントを検索します」が,キーに対応する複数の
コンポーネントだということが分かりにくいかな,と.
でもでも,

 * 現在のS2コンテナおよび、インクルードされているS2コンテナの階層から、
 * キーに対応するコンポーネントが最初に見つかったS2コンテナに登録されている、
 * キーに対応する全てのコンポーネントを検索します。

だと明らかにくどい.
難しいですね.うーん...
箇条書きっぽくしてみる?

 * 検索の対象は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。
 * S2コンテナ階層から、キーに対応するコンポーネントが最初に見つかったコンテナを選択します。
 * 選択したコンテナから,キーに対応する全てのコンポーネントを配列で返します。

みたいな.

> * <P>
> * コンポーネントの検索順について
> * 最初にメソッドが呼びだされたS2コンテナ、
> * 次に、インクルードされているS2コンテナの順番にしたがって検索をします。
> * </P>

ここも見出しっぽいのは無しで,「コンポーネントの検索順は、〜」って
感じで.

> * <P>
> * 返される配列に含まれるコンポーネントは全て同一のS2コンテナに登録されたものです。
> * </P>

これは上に移動したいかなぁ.
箇条書きの最後に追加するとか.

> * <P>
> * インクルードされているS2コンテナの階層全体に対して、
> * キーに対応した全てのコンポーネントを検索する場合には{@link #findAllComponents}を使用してください。
> * メソッドが呼び出されるS2コンテナに対してのみ、
> * 登録されているコンポーネントだけを検索する場合には{@link #findLocalComponents}を使用してください
> * </P>

これは @see で十分かも.
それぞれのメソッドで説明があるわけなので.

> * <P>
> * キーが文字列の場合、名前が一致するコンポーネントを返します。
> * キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。
> * キーに対応するコンポーネントが存在しない場合は空の配列を返します。
> * </P>

これは @return に書いてもいいかも.

> *
> * @param componentKey
> *            コンポーネントを取得するためのキー
> * @return コンポーネントの配列
> * @throws CyclicReferenceRuntimeException
> *             コンストラクター・インジェクションでコンポーネントの参照が循環している場合
> */
> 

@return は上の段落を持ってくるということで.

> これからすると、
> findAllComponents、findLocalComponentsも一文ではなく、もう少し説明が要りますよね?

そうですね.基本的に同じ形にしましょう.

> それと、@linkも必要でしょうか?

@link というか @see を相互に書きましょう.

> また、find〜Defsも〜定義が変わるだけですが、同様な説明が必要ですよね?

ですね.


> 最後に、クラスメソッドの件です。
>     概要
>         S2コンテナはSeasarの基本的な部分
>         diconファイルの設定で動作する
>     仕組み
>         コンテナ生成
>         初期化
>         コンポーネント取得
>         メソッド実行
>     インジェクション
>         3つの種類
> 
> こんな感じのアジェンダを考えたのですが・・・ここまではいらない?
> ですか?

そうですねぇ.
「概要」の「diconファイルの設定で動作する」は少し微妙.
S2Container は dicon ファイル無しでも使えますからね.

「仕組み」は「ライフサイクル」とした方がいいですね.
その前に「構造」みたいなのが欲しいかなぁ.
構造というのは,S2コンテナはインクルードされたコンテナと
コンポーネント定義を持ち,階層を成しているということ.
一つのコンテナは複数のコンテナをインクルードすることができて,
一つのコンテナは複数のコンテナからインクルードされることが
できるということ.
一つのコンポーネント定義は一つのコンテナにしか
所有されないということ.
などなど.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"koichik @ improvement.jp"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



seasar-javadoc メーリングリストの案内