考える場所

ココロとカラダ、思考する全部

責任感と自信

リファクタリングしたくなるコードがある。アウトプットとして完全性は満たしている、しかしメンテナビリティが悪い。というような。あちらこちらに同じコードが散見していたり、ファットなクラスができあがってしまっていたり。あるいは完全性すら満たしていないかもしれない。理由はさまざまだがとにかくそういうコードを見ることがある。

そんなときどうしたらよいか迷う。直すのがよいのは当たり前だ。しかしただ直すことが難しいときがある。技術的に難しいのではない。お仕事ととして難しい。お仕事では動いているコードに手を入れることを禁ずる強い縛りがある。割と堅い業務アプリケーションを開発する現場はおよそそうだろうと想像する。コードとしていかに手を入れる箇所を少なくするかが大事。リファクタリングという概念はない。一度動かしたら障害ドリブンである。

それでも直したいと思う。手を入れる箇所を少なくした修正を重ねればコードはどんどん汚くなっていく。ゴミにゴミを重ねてやがて手をつけられないほどのゴミになっていく。コードに触れる人なら感覚として分かる。これはいちど整理しないとまずい。しかしお仕事の縛りと感覚は相反する。テストの自動化が整っていれば迷うことはないかもしれない。が、現実はそうでなかったりするから、直すたびにテストだエビデンスだと言われれば見て見ぬ振りもしたくなる。

それでも直す。お仕事のプロセスとしては不正かもしれない。だから黙って直す。何かの変更にまぎれてどさくさに直す。やはりそうするのがよいと分かっているから。責任感がそうさせる。私はよりよいコードを保全するための選択をすることができる。プロセスを踏んでは実現しそうにないから省略する。それは自信でもある。プロセスを省いても大丈夫だと言えるだけの。

本当はテストの自動化を整えてリファクタリングしやすくするのが成功法だろう。が、そこにコストをかけさせてくれることは、現実的にない。テストの対象になるコードだってそれを前提にした設計をしなければいけないから簡単に済ませられる話ではない。既に動いているコードならもう絶望的だ。だから現実の動きとしてこういうことはどこの現場でもあるだろうし、現場はそのような確信犯によって(良くも悪くも)支えられていたりするよな、とも思う。