概要

みなさんこんにちは!引き続きZenjectなどのDI

コンテナをなぜプロジェクトに導入するのか?などについて解説を行って行きますが、

今日は、設計のアンチパターンからDIを導入するメリットを見ていこうかと思います!

その1:1つのクラスに機能が集中しすぎている(神クラス)

一つのクラスにいろいろな機能が詰め込まれて、何でも屋になっているパターンです。

1つのクラスに集中させすぎることで、機能が密結合になっていきメンテナンスが困難になります。

例:

千行以上あるMainSceneManager

・・・・

ぎっしりと詰め込まれたInspectorのField達・・・

密結合だと何がよろしくないのか?

・一つは、最初に説明しましたモジュールの独立性が失われます。

独立性が失われると、機能の使い回しができなくなります。

(モジュールは使いまわせるようにして、資産にしていきたい!)

・分担作業しづらくなる

密結合なモジュールができてしまうと、分担して他の作業者さんに割り振りなどがしづらくなってしまいます。

コードの属人化に繋がっていき、その人が例えばプロジェクトを抜けたりするとその部分がブラックボックス化したりなんてことも。

・分担しづらいモジュール -> 属人化 -> ブラックボックス化

・あとは、密結合だとコードのメンテナンス性が低下します。

お互いの機能や値が依存しあっているので、変更をコードに加えると様々な箇所に影響を与えてしまいます。

その結果、バグが発生する範囲や変更点を確認する範囲が大きくなり修正コストが増大します。 => メンテナンス性の低下

引き続き、アンチパターンについて見ていきます。