Payload Logo

コードレビュー観点

Date Published

※チェックリストはExcelで

ここでは各観点を詳しく解説


  1. 継承と委譲を使い分けているか

現代のシステム開発では「継承よりも委譲を優先せよ(Favor composition over inheritance)」が鉄則

・継承 関係性: 「is-a」関係 (子 親の一種である)

→「犬」は「動物」である。 / 「管理者ユーザー」は「ユーザー」である。

・委譲(Delegation)関係性: 「has-a」関係 (自身の中にその機能を 持っている

→「スマートフォン」は「カメラ」の機能を持っている(スマホはカメラの一種ではない)。


委譲を使うべきケース(基本はこちらを優先)

一部の機能だけを再利用したい場合や、柔軟に中身を差し替えたい場合に使います。

基準: 「機能の一部だけを借りたい」とき。


「extends(継承)を使うと親クラスと一蓮托生(密結合)になるので、この機能が欲しいだけならメンバ変数として持って委譲しませんか?」と声をかける