「動けばいい」は正しい。でもずっとそれでいいのか。コードを書くという行為をもう一度真剣に考えてみたい。
書いた瞬間から保守コストが発生する。動いているコードですら、読まれるたびに他人(と3ヶ月後の自分)の時間を奪う。そう考えると、「書かない」という選択が最善のコードであることも多い。コードは資産である前に負債なのだ。
名前付けは設計である
data, info, tmp という変数名を見たら、そのコードは設計されていないと判断していい。変数名は処理の意図を宣言する行為であり、クラス名はシステムの分割線を引く行為だ。
コメントを書くな、コードを書け
「このコードはXXXをする」というコメントが必要な時点で、命名か構造が敗北している。コメントは「Why」だけ書け。「Why」はコードでは表現できないからだ。
// Bad
if ($user->last_login > strtotime("-30 days")) { ... }
// Good
if ($user->isActive()) { ... }
過剰なDRYは害悪
3回出てきたら共通化、は早すぎる。似てるけど違うロジックを無理にまとめると、if分岐まみれの神関数が生まれる。「たまたま同じ」なら放置でいい。本当に共通化すべきタイミングは「同じ理由で一緒に変わる」ときだけ。
道具への投資を惜しむな
エディタ、シェル、キーボード、開発環境。これらは毎日8時間触るもの。年間2000時間の質を20%上げるだけで、差は計り知れない。良い道具はコストではなく投資。
まとめ
「動けばいい」コードは、動かなくなるまでそのままだ。コードを書くことは未来の誰かのための手紙を書くこと。読み手を想像しよう。