以前に「お前のコードはひとつのクラスに複数の責務が混ざっている」的なことを言われて、それなりに落ち込んだあと、「この機能がこのクラス内に存在していて良いのだっけ?」的なことを常に考えながらコードを書くようになった。「考えながら書いている」のは事実だけど、その結果として「綺麗なコードが書けている」かどうかは分からない。
今日は「ガーッと作ってとりあえず動いているコード」に対して、ユニットテストを書いていた。その時点で TDD ではないのだけど、まぁ、それはそれ。テストを書いていると「なんだか書きにくいな」と思って、もう一度よくそのクラスを見直してみた。
すると、そのクラスには、複数の責務が混ざっていることに気がついた。そこで、テストを書きつつ、クラスを分割した結果、複数のクラスとそれを格納するディレクトリが出来あがった。(が、その設計が正解なのかということにはまだ不安もある)
この流れをもう少し高速に回せる、あるいは、最初からその形に設計できるのが優れたエンジニアなんだろうなぁ。