ポケットの中の
イヤホン
ただ、聞きたかっただけなのに。
ポケットから出したイヤホンは、解読不能な知恵の輪になっていました。
あなたのコードも同じです。1行を変えたいだけなのに、全体を解きほぐさないと触れない。
- 関数の中で、別の関数を呼び、その先で元の関数を呼んでいる
- 1つのファイルの行数が3000行を超えている
- 「このコードが何をしているか」書いた本人も覚えていない
- バグを直すと、全く関係ないはずの別の機能が壊れる
このままでは、機能追加のコストが指数関数的に増大し、いずれ開発不能になります。
01. 絡まり合う依存関係
「とりあえず動くから」と、コピー&ペーストや、グローバル変数を乱用した結果、
コードは密結合(Mitsu-Ketsugo)状態になります。
Aという機能を修正しようとすると、BにもCにも影響が出る。
どこを引っ張っても結び目が固くなるだけで、解くことはできません。
リファクタリング(整理整頓)をサボったツケは、必ず利子付きで返ってきます。
借金をするのと同じだ。
返さなければ、破産する。
02. 責務を分割する
良いコードは「疎結合(So-Ketsugo)」です。
イヤホンをケースにきれいに巻くように、機能ごとに部品(クラスやモジュール)を分けます。
「ユーザー認証」は認証のことだけを知っていればよく、「画面表示」のことは知る必要がありません。
お互いのことを知りすぎない関係(カプセル化)こそが、健全なシステムの秘訣です。
03. ボーイスカウトの精神
「来た時よりも美しく」。
コードを触るたびに、変数名をわかりやすくしたり、長い関数を分割したりする。
この小さな積み重ねだけが、スパゲッティ化を防ぐ唯一の方法です。
「あとで直す」は、絶対にやってきません。
今、この瞬間に直すのです。