大きな泥だんご

大きな泥だんご。英語で Big ball of mud。

理解可能なアーキテクチャが欠けている ソフトウェアシステム のこと


でたらめに構築され、乱雑で無秩序、ダクトテープで繋ぎ合わされたようなコードのジャングルのこと


無秩序な状態のことです。結局きちんと設計されたソフトウェアなんてほとんどない、特にそれは最近の Agile の流行の中で助長されているのでは?

なんでこんな作りになっちゃってんのか分かんないけど、表面上はとりあえず動いている、という、世のシステムの9割がたが該当する状態のこと

なんで泥だんごになるの

理解可能なアーキテクチャが欠けている、ということは、理解可能な構造にまで落とし込まずに実装した、ということ。

乱雑で無秩序ということは、既存の構造と乖離した構造を無理やり繋ぎ合わせた、ということ。

極端な話、既存コードの設計が多少イケてなくても、追加コードは既存の設計を真似て作って馴染ませてやった方が、全体としては読解しやすくなる。イケていなくても、それはそれで「規則性」ができるからだ。

無秩序というのはそのとおり「秩序がない」わけで、「こっちのコードはこうなっている」「でもあっちのコードはああなっている」というシステムは読みづらい。イケていない設計でも「全体としてこういうダサい設計をしてるんだな」という秩序が読み取れるほうがマシなのだ。

さて、なぜこんな実装になるのか。人間誰しも、自分が手掛けて作るなら、最初から汚くて最低なものを作ってやろう、とは思わないはず。最初はきっと志高く、ああしようこうしようときっと考えているはずなのだ。それなのになぜ泥だんごが出来上がるのか。このあたりが理由ではないだろうか。

どうしたら泥だんごにならないの

参考