Effective java 3版 読書会 6日目

実施日時:2019/1/23 22:15~23:15
対象範囲:項目21~項目25
参加者:yodai、yoridori、kassyi
形式:オンライン(discord)
   課題本を事前に読み、実業務と照らし合わせて記述内容の
   議論をする。

項目21 将来のためにインタフェースを設計する
デフォルトメソッドにより柔軟性が増えたが、良く考えてインターフェースの設計をすること。
デフォルトメソッドに頼らない様にすること。
インターフェースに追加するものは共通的に使えるものでなければならない。
新規開発で共通的に使えるメソッドが有れば使っても良いが、安易に拡張するためにデフォルトメソッドを追加する事は危険が伴う。
抽象メソッドの代わりに安易に使う事はするべきでない。
現場では、デフォルトメソッドより抽象クラスを使っていた。

項目22 型を定義するためだけにインタフェースを使う
インタフェースは、型を定義するために使用するべきで、定数を定義するべきでない。

項目23 タグ付きクラスよりもクラス階層を選ぶ
基本、業務ではクラスにタグは使わずに継承などを利用する。
タグ付きクラスとは、クラスの性質を変数(タグ)によって分岐させるクラス。
オブジェクト指向言語として不適切と思われるので、クラス階層を作るべき。

項目24 非staticのメンバークラスよりもstaticのメンバークラスを選ぶ
メンバークラスを作成する場合は、基本staticにすることを考える。
メンバークラスを使う場合は、ビルダーパターンを候補として考える。
無名クラスは可読性が悪くなる。
非staticを使うとインクロージングのライフサイクルが長くなるので注意するべき。
エンクロージングインスタンスとは、メンバークラスのインスタンスを持っているインスタンスであり、2つのインスタンスが生き続けてしまう。

項目25 ソースファイルを単一のトップレベルのクラスに限定する
アクセス修飾子を変更しないと1ファイルに複数のクラスを定義した場合にコンパイルエラーとなる。
そもそも、1ファイルにメンバークラス以外に複数のクラスは定義しない。

協力:Tech Baton
https://tech-baton.studio.design/

この記事が気に入ったらサポートをしてみませんか?