Mistake #36 : Spaghetti Code

ポケットの中の
イヤホン

ただ、聞きたかっただけなのに。
ポケットから出したイヤホンは、解読不能な知恵の輪になっていました。
あなたのコードも同じです。1行を変えたいだけなのに、全体を解きほぐさないと触れない。

🍝 スパゲッティ度診断
  • 関数の中で、別の関数を呼び、その先で元の関数を呼んでいる
  • 1つのファイルの行数が3000行を超えている
  • 「このコードが何をしているか」書いた本人も覚えていない
  • バグを直すと、全く関係ないはずの別の機能が壊れる
⚠️ 警告:あなたのコードベースは「技術的負債」の塊です。
このままでは、機能追加のコストが指数関数的に増大し、いずれ開発不能になります。

01. 絡まり合う依存関係

Dependency Hell

「とりあえず動くから」と、コピー&ペーストや、グローバル変数を乱用した結果、
コードは密結合(Mitsu-Ketsugo)状態になります。
Aという機能を修正しようとすると、BにもCにも影響が出る。
どこを引っ張っても結び目が固くなるだけで、解くことはできません。
リファクタリング(整理整頓)をサボったツケは、必ず利子付きで返ってきます。

汚いコードを書くのは、
借金をするのと同じだ。
返さなければ、破産する。

02. 責務を分割する

良いコードは「疎結合(So-Ketsugo)」です。
イヤホンをケースにきれいに巻くように、機能ごとに部品(クラスやモジュール)を分けます。
「ユーザー認証」は認証のことだけを知っていればよく、「画面表示」のことは知る必要がありません。
お互いのことを知りすぎない関係(カプセル化)こそが、健全なシステムの秘訣です。

03. ボーイスカウトの精神

「来た時よりも美しく」。
コードを触るたびに、変数名をわかりやすくしたり、長い関数を分割したりする。
この小さな積み重ねだけが、スパゲッティ化を防ぐ唯一の方法です。
「あとで直す」は、絶対にやってきません。
今、この瞬間に直すのです。

執筆:ソフトウェア職人(Craftsman)

「動けばいい」を許さないコード品質の守護者。
SOLID原則やデザインパターンを駆使し、メンテナンス可能なコードベースを維持する。