«前の日記(2007-05-22) 最新 次の日記(2007-06-01)» 編集

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2007-05-31 [長年日記]

_ [Java][論文] コンストラクタは引数なしが使いやすい

Jeffrey Stylos, Steven Clarke: Usability Implications of Requiring Parameters in Objects' Constructors. Proceedings of ICSE 2007, pp. 529-539 [IEEE site]

Brian Ellis, Jeffrey Stylos, Brad Myers: The Factory Pattern in API Design: A Usability Evaluation. Proceedings of ICSE 2007, pp.302-312 [IEEE site]

いわゆるクラスライブラリ,API の使いやすさを評価しようという人々による論文2本です.

前者のほうは,何らかの引数が必要なコンストラクタを使うコードと,そうでないコード(引数なしで new した後に setFoo などとしてパラメータを与えるもの)とでどちらが使いやすいのか(短時間で使えるか),という比較を行っていて,後者のほうは,Abstract Factory って本当に分かりやすいのか,というのを調べています.

開発者は,コードを書くときに,とりあえずデフォルトコンストラクタの存在を仮定して new しようとし,コンパイルエラーが起きたのを見てから色々調べ始める,というパターンが多かったようです.なので,パラメータが必須なコンストラクタしかないクラスを使うのには,デフォルトで動くクラスを使う場合よりも時間がかかっています.

パラメータが必須ではない(デフォルト値つき)コンストラクタの場合は,与えるべきパラメータの組み合わせを理解することができ,それなりに便利なようです.

インタビューの結果によれば,実験対象となった開発者たちは,new してから setter を呼び出すほうが初期化の柔軟性が高くてうれしい,また,プロパティの値をセットしていく途中で適切なエラーコードを返せる(コンストラクタだと例外を投げるしかない)ことも良い,と答えていたようです.

Abstract Factory の場合は,コンストラクタを呼ぼうとする → コンストラクタが protected だからエラー発生 → 「サブクラスのために protected で用意してるよ」という決まり文句のコメントを見てサブクラスを探索 → でも見つからない → ようやくファクトリメソッドの存在に気づく というようなパターンにはまって時間を消費する場合があるようです.普通のコンストラクタで対応できるときはそうすべきだ(意味なく Abstract Factory パターンを導入すべきではない),と指摘しています.

お名前:
E-mail:
右の画像に書かれている文字列を入力してください:
コメント: