最初から綺麗なコードを書き下せる人もいると思うけど、自分の場合はそこまで優秀ではないので最初から綺麗なコードが書けない。 どちらかというと既存のコードを綺麗にしていく方が得意なので、ゼロから書くときもその特性を活かせるように意識している。 意識していても最初から綺麗なコードを書こうとして、途中でうまくいかずにこんがらがって失敗することも多いのだけれど。
ゼロから書くときは何もコードがないので綺麗にするということが出来ない。
ではどうすればいいかと言うと雑に書いてしまう。擬似コードのこともあるけど、最近は動く汚いけどコードを書いてしまうことが多い気がする。 そうすると綺麗にするフェーズに入れるので、ちょっとずつ良い感じにしていけばよい。 最初に書いたコードは跡形もなく消えるかもしれないけど、結果的には最初から綺麗に書こうとしているときよりも速く、そしてここが重要だけれど読みやすくなる。 読み易いということはメンテナンスしやすいということで、つまりたぶん良い設計になっている。
FAQとしては書いたコードを触ると壊れるかもしれないじゃんというのがありそうだけれど、テストを書いているので壊れたらすぐに気付ける。 いろいろ実験しながら綺麗なコードにすればよいと思う。
雑なコードなんかちゃんと動かないでしょという話もあるかもしれない。繰り返すけどテストを書いてるので正しいと自信が持てる。ルーク、先にテストを書くのじゃ。 綺麗な動かないコードより、動く雑なコードの方が無限倍の価値がある。だって動かないコードの価値は0なんだもの。
まあ、こんなことを書いているけど、だいぶ理想論であってそんなにいつもうまく出来ている訳じゃないのだけれど。
ところで「リファクタリング」っていうワード、なんか濫用されすぎて全然違う意味で使われたりしててだんだん嫌いになってきてしまった。 リファクタリングはものすごく好きなプラクティスなので悲しいです。