Tech Note

Azure, Office 365, Power Platform, etc... の勉強手記

レガシーコードをリファクタリングしてみた

発端

先日、TTDBC のコミュニティ内でレガシーコードをリファクタリングするライブコーディングに参加させていただきました。 実際に自分でも手を動かしてみようと思い、C# のサンプルでリファクタリングを実践してみました。

サンプルコード

今回リファクタリングのサンプルで使用したリポジトリはこちらです。 様々なプログラミング言語で用意されているので、お好きなものから選べます。

github.com

ちなみに、リポジトリ名の Kata は空手などの という意味だそうです。

実際にリファクタリングしてみたコード

私が C#リファクタリングを実践した結果はこちらです。

github.com

元々用意されていたテストフレームワークNUnit だったので、別途 xUnit のテストプロジェクトを用意してそちらにテストコードを書きました。 (その際、テストプロジェクトフォルダをルートフォルダに作ってしまった…)

所感

ライブコーディングでは一気にテストを書くのではなく、ある程度テストコードを書いたらリファクタリングを進めて、慎重にリファクタリングをしたい部分があれば、その範囲内を対象としてテストコードを追加で記述するといった感じでした。

流暢にテスト&リファクタリングを進めてて感動しました。

私もそれに倣って簡単なテストコードを書いてグリーンにしてから、まずは IDEリファクタリング機能を全面に信じて、IDEリファクタリング機能のみを利用してリファクタリングを進めました。

もうこれ以上は IDE によるリファクタリングができない、つまり本番コードに手を加える必要が出てきた際に、テストコードを書きました。私はここで一気に思いつくテストコードを書きました。

本番コードに手を加えるリファクタリングは、歩幅を広げすぎない程度に少しずつやった方が良いとは思っていたのですが、それがなかなか難しくて一気に本番コードに手を加えてしまいました。反省…。 (Factory パターンを適用する形で一気にコードを書き換えた)

I/F を定義して、それを実装したクラスを作成して、いくつか同じ I/F を実装したクラスが登場してきたら Factory メソッド作りますかとなって…という流れが理想なのかなと。

リポジトリもリファクタリングの教材となるものが沢山あるみたいなので、反省点を振り返って実践したいと思います。