SonarQube squid:S110 クラスの継承ツリーが深すぎます。


継承は、確かにオブジェクト指向プログラミングの最も重要な概念の1つです。以前に作成したクラスを継承することで、基底クラスの属性と動作を、コンパートメント化して再利用する方法です。 しかし、この概念を乱用し、深い継承ツリーを作成すると、非常に複雑で維持できないソースコードにつながる可能性があります。ほとんどの場合、深い継承ツリー読みづらく、変更しづらいです。オブジェクト指向設計では、「コンポジション」がよりもうまくいく場合に「継承」を体系的に使用するべきです。

補足事項

  • この内容は以下の、squid の説明文を日本語翻訳したものです。

    sonar-java/S110_java.html at master · SonarSource/sonar-java

  • リンク化したら使いやすいかもしれないので、1ルールごとに1ページ化しています。

  • こちらに原本はあります。

    • コメント