自然なリファクタリング

古いHDDから中学生の頃に書いていた結構な量のコードが発掘された。CやPHPもあったが、殆どがRubyだった。 詳細が分からないのでとりあえず全部PrivateRepositoryに置いてみた。
中には当時書いていたTwitterClientがあって、APIが1.0のままだから現在では動かせないが読めるものだったので読んでみた。微妙な銘々規則や変数名、明らかにコピペされた箇所、起きそうもない例外に対しての冗長、雑な例外処理(これは致命的で笑った)。見ていて結構恥ずかしくなった。
下位のディレクトリに、仕様だと思われるWordファイルが見つかった。今の僕ならどうやるかなぁ、とふと気になたのでちょっと悩むといい感じの設計が見えてきた。
400行近いコードの刷新と、API1.1(というかオレオレAPI)対応が主にやったことだけど意外と時間がかかった。40分くらいで綺麗になって、ちゃんと動くものが仕上がった。同じ機能が148行で提供できた。どうせなら140行で書き上げたかった。*1
改善するのにコードだけでは不十分だというのが分かったので、今後は仕様書ちゃんと書こうと思う。
今回のコード発見では結構面白い気付きがあって、コードや仕様を読んでいて「ここは良くないなぁ」「これは使えるなぁ」っていうのの選択がポンポンできたということ。7年前の僕では出来ていなかったことが、今の僕にはできていて、成長しているのかもしれないなぁと実感した。特に、良くない所を見つけ出す嗅覚(?)と、それに対する改善方法を即座に思い付ける様になっていたことが嬉しかった。
7年間あれば書籍が増えてインプットや知見も増えるし、他人との出会いで触発されたりして、そりゃあ変わるよねってことで。
僕自身も僕や周りの人たちによってリファクタリングされているような、そんな感覚が心地よかった。
数年先の僕ならもっと綺麗で、もっと軽量で、もっといいものを書けたりするんだろうか?と思いながら、現在でも開発の続いている僕の大好きなプログラミング言語で書かれた、僕の大好きなClientのプロジェクトファイルに手を付けることにした。

リファクタリング:Rubyエディション

リファクタリング:Rubyエディション

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

Rubyベストプラクティス -プロフェッショナルによるコードとテクニック

*1:よく考えたらTwitterは140文字だ。