読書会(Effective Java (Second Edition))第3回議事録
[ 戻る ]
Java読書会議事録 Effective Java 2nd edition.(第三回)
日時 : 2008/10/25(土) 10:00-17:00
場所 : 10/25(土) テクノ川崎
出席者:高橋(智)、高橋(徹)、吉村、小棚木、松永、村山、
岩室、高江州、尾関、遠藤(書記)
- Item12 Comparable
- TreeSetには、Comparableしか入れられないようになっているのか
- Comapratorをもらうコンストラクタを使う場合は
要素がcomparableである必要がないので強制はされない
- デフォルトコンストラクタで作成したTreeSetに
Comparableでないものを入れたらランタイムエラーになった
- Collections.addAllのシグネチャは?
public static
T... elements)
- Genericで色々な制約が書けるのは、
APIを作成する側には都合がよいが
使う側には読みずらい
- Item13
- テストのために可視性をパッケージプライベートにあげるという
記述のあたりからテストに関する話題で大盛り上がり
- 単体テストを同じパッケージにしてパッケージプライベートクラスも
テストをするという考え方もあるが、パッケージを別にして
公開情報だけ使うテストの方がよいという意見もある
- testには色々なレベルがあって一概にどちらがよいとはいえないのでは
- パッケージの中のクラスまでテスト
- パッケージの外から公開情報だけ使ってテスト
- 開発が始まってからある程度経つと
テストコード自体をメンテナンスするのにもコストがかかるので
なんらかのタイミングでいくつかのテストを消すという人がいる
- どんな基準で消すのかが分からない
- プロジェクトによって、どこまでテストするか自体違うので
一概にはいえない
- TDD、BDDとは何かの説明
- 仕様に記述される振る舞いをソースコードで記述する
- 連続量を引数にとるとき
- 仕様書の代わりにしてしまうこともある
- 画面のテストはできるか
- 人海戦術で動作確認している
- 自動化は難しいが何もやれないわけではない
キャプチャをとったり、マウスをトレース・再現するような
やり方もある
- Item14
- P71〜72にまたがる一文は何を言いたいのか
- the abstraction provided by the class
クラスが提供する抽象
→ クラスが何を表すか たとえばPointは座標を表す
- they do an adequate job of describing the abstraction
→ 座標がx座標と、y座標から構成されているなら
Pointがフィールドx、yを持つなら適切に記述しているといえる
フィールド名がa、bだったり、フィールドが足りない、不要だったりすれば
適切でない
- item15
- 「Stringでも使われている」の意味は?
-- hashcodeのlazy initialize
hashcode値は最初に問い合わせたときに計算される
- item16
- ForwardingSet
- @OverrideはJava6でインタフェースのメソッドにも書けるようになったが
この例ではオブジェクトのメソッドにたいしてのみ記述している
- SELF問題のあたりから
- 転送用のクラスを分離したの合わせて、
インタフェースと転送クラスをセットにして
同パッケージから提供する
という記述になっている
- JDKにもFowardingクラスはあるのか
- java.ioのFilterOutputStreamは似ている、
ただしストリームはインタフェースではなくクラス
- Fowardingクラスは最近の話題なのか
- 継承か、委譲という話題は結構前からある
- 委譲と転送は違う
- 転送はただ転送先のメソッドを呼ぶだけ
- 委譲は呼び出し元が自分自身も相手に渡す
- item17
- JDKのAPIには自己利用に関する記述はあるのか
- Appletのpaintには、ある程度書いてあるかもしれない
- 次回
- 次回には日本語訳が出版されている可能性大です。
- 訳者サイン会があるかも知れません。
[ 戻る ]