Java の講師をふりかえって思うこと

私が最初の Java 講師を行ったのが平成 13 年でした。それから 7 年余、のべ 500 名以上の技術者にオブジェクト指向の話をしてきました。そこでわかったことは、オブジェクト指向を理解する(慣れる)過程には、ある共通の「段階」があるということです。

最初の段階では、一つのクラスに多くのメソッドを実装しようとします。巨大なクラス、巨大なメソッドが登場し、「このコードはどうすればオブジェクト指向っぽくなるだろう」と悩み始めます。

次の段階では、クラスの関係を「継承」で考えようとします。その結果、パッケージ内で結合依存度の高いクラス群ができあがってしまい、まだオブジェクト指向のメリットを享受できていません。引き続き、もっとよい方法は何かと学習を続けます。

インタフェースの使い方に慣れたころ、クラス間の関係性を疎結合に保つことの重要性を理解できます。リファクタリングデザインパターンを学ぶ意味がわかります。クラスの数は増えますが、一つ一つのクラスは単一目的で実装され、クラスの組み合わせを行うことが楽しくなります。

インタフェースプログラミングをさらに進めると、DI と AOP 技術の存在意義が理解できるようになります。言い換えると、あるレベルに達しない限り、DI や AOP の有効性には気付かないということです。

オブジェクト指向は「ソースコードの正規化」技術だと思っています。RDB はテーブルの正規化によってデータの二重管理を防ぎますが、オブジェクト指向デザインパターンによってソースコードのコピペを防ぎます。