コードの草むしりをしよう(ボーイスカウトルール)

はじめましての人ははじめまして。そうでないひとはお久しぶりです。猫ロキP(@deflis/id:deflis55)です。

今日は、コードをキレイにする心がけの話を書きたいと思います。

前職のチームでは「草むしり」という習慣がありました。いわゆるボーイスカウトルールみたいな話なんですが、コードのちょっとした不満点を草としてむしっていこうというルールでした。

歴史の長い大規模なコードベースをいじっていると細かいけど修正したい箇所にちょくちょく出くわすと思います。 「このメソッドの引数の説明ちょっと間違ってるな?」とか「この変数の名前ちょっと変だな?」とか「型引数つけ忘れてない?*1」とか「これ新しい文法/ライブラリならもっときれいに読みやすく書けるのに」とか。 これらのホントにちょっとした雑草を、せめて今回の変更でいじる範囲だけでもキレイにしていこうというのが草むしりです。*2

草が大きくなってくると、リファクタリングの域に達するような変更もあるかもしれません。ですが、それもちゃんと行った理由*3を説明すれば納得してもらえるはずです。

様々な理由でちゃんと動いてはいるけど(コードとしては)中途半端なものが動作している状態になるのはありがちです。 でも、この心がけ一つで少しづつでもよく触るような箇所のコードは良くなっていくと思います。 始める前は草ボーボーの汚いソースコードでも、少しづつ草むしりをすれば地面が見えてくるようになるはずだと思っています。 草をむしっていく心構えがあるだけで、どんどんコードは読みやすくなっていくはずなので積極的にコードの草はむしっていきましょう。

本日の一冊のコーナー!

恒例にしたい一冊コーナーです。

今回は草むしり、つまりゴミ拾いなのではということでこれです!

もうすでにアニメ化決定しているぐらいの大人気作品です。ほのぼのかと思いきやちょっとダークなところもあって、非常に説明しづらいんですがなにはともあれ漫画版からでもいいので読んでみてください。

to-corona-ex.com

*1:とくにPHPだと、古いバージョンではプリミティブ型の型引数が書けなかったりとかしたのでよく見かけそうです。

*2:もちろん、変更を加える範囲以外もキレイにしていくべきだし、そういう余裕があればやるべきです。

*3:安全に変更したいとか、機能を追加するにも拡張性が足りないとか、なにかリファクタリングしたい理由はあるはずです。