質問: 業務アプリケーションをjavaで作るとき「とりあえず、スーパークラスを作っておくのはありか?」という質問です。 背景 ・Controllerを作っているのですが、入力画面を処理するController/一覧画面を処理するController/Ajaxだけを処理するController の3つのControllerを作りました。 ・入力画面、一覧画面のには共通処理があるし何かと便利そうなので、スーパークラスを作りました。 ・Ajaxを処理するControllerは特に共通処理がありませんでしたが、とりあえずスーパークラス(まったくロジックが書かれていない)を作ってみました。 共通化する必要もないし、ポリモーフィズムをすることもない。 だけれど、このクラスだけsuperが無いのはおかしい気がするし、将来的にどのくらい拡張するのか分からない という場合、「とりあえず、ajaxを処理するControllerにも、スーパークラスを作っておく」のはありなんでしょうか?
回答: こんにちは。 とりあえずスーパークラスを作るのは「なし」です。 継承にはメリットとデメリットがあります。 * メリット:スーパークラスとサブクラスで共通する処理をまとめられる * デメリット:スーパークラスとサブクラスの間で依存関係ができてしまう 「おかしい気がする」という理由だけでスーパークラスを定義すると、 メリットを活かしきれず、デメリットだけが残ってしまうかと。 まずは継承なしで実装をしてみてはどうでしょうか。 その後で、スーパークラスとして分割すべきかどうか判断してもよいと思います。 追記: 処理の共通化には、継承以外にも方法があります。「継承 委譲」あたりのキーワードで検索してみてください。