連載の第1回でコード品質の概要を、第2回でコード品質を決める指標の例と、その指標をどのようにして測定するのか、具体的な方法やツールについて説明しました。今回は、いよいよ実際のコードを題材に、コード品質を上げる行為、つまり「リファクタリング」を取り上げます。
リファクタリングって何?
いきなりですが「リファクタリング」について、普段どれぐらい意識していますか? コード品質に関わる重要な概念ですが、この単語は、職業としてプログラミングをやらない限り、人生で出会わない単語の筆頭と言えるかもしれません。下図は、リファクタリングと、おそらくそれと同程度には知られているのでないかと思われる開発用語の検索頻度を、Google Trendsで調べてみたものです。
検索期間は2013年10月21日から2023年10月21日、地域はJapan、カテゴリーはComputers & Electronics(SoftwareやProgramingをサブカテゴリに持ちます)です。「コードレビュー」もコード品質を上げるうえでは重要な行為だと思いますが、日本では意外と浸透していないようですね。コードレビューに関しては、機会があればまた別の記事の中で取り上げたいと思います。
さて、リファクタリングとは「プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること」です。私自身恥ずかしながら、なぜこの行為をリファクタリング(Refactoring)と呼ぶのかは知りません。“Re”は、繰り返しの接頭語、“factoring”はfactorの動名詞型で、factorは因数分解をするという意味になります。ですので「ソースコードを再度わかりやすく要素ごとに因数分解する」というようなイメージなのでしょうか。ちなみに、この後紹介する『リファクタリング 第2版』の著者でもあるMartin Fowlerさんは、自身のブログでRefactoring の語源について述べています。ご参考まで。
リファクタリングは誰のためのものか?
リファクタリングは、上記の定義からもわかるように、プログラムの機能を追加したり変更したりするものではありません。つまり、リファクタリングをしてもしなくても、そのソフトウェアを使うユーザーにとっての価値は変わりません[*1]。では、リファクタリングは誰のためのものか?というと、それはまさに開発チーム、自分達のためのものです。リファクタリングを行うことで、一般的には以下のような効果が期待できます。
可読性が高まる
コードが整理され、命名が適切になることで、他の開発者がコードを理解しやすくなります。これにより、チーム全体の生産性が向上します。
バグが見つけやすくなる
整理されたコードは、不具合やバグを見つけやすくなります。複雑なコード構造や冗長なコードを排除することで、予期せぬ動作やエラーを回避しやすくなります。
変更や拡張がしやすくなる
構造化されたコードは、新しい機能の追加や既存の機能の変更が容易になります。
テストがしやすくなる
リファクタリングは、ユニットテストの作成や実行を容易にします。テストがしやすいコードは、安全性と信頼性の両方を高めるのに役立ちます。
特に複数人による長期間にわたる開発では、ソースコードの品質を一定以上に保ち、ソフトウェア開発を継続的に進めていくために、定期的にリファクタリングを行う必要があります。
[*1] ただしリファクタリングした結果、機能は変わらなくても「サクサク動くようになった」とか「不具合で落ちにくくなった」とか、性能が向上してユーザーの満足度が上がる可能性はあります。
この記事は参考になりましたか?
- 実例で学ぶ、コード品質の高め方連載記事一覧
-
- どうやってコード品質を上げるのか? 実例で学ぶリファクタリング
- どうやってコード品質を測るのか? ソースコード品質の測定指標とその活用
- なぜ今、コード品質が求められるのか? ChatGPT時代を生き残るためのエンジニアの基礎ス...
- この記事の著者
-
浅原 明広(株式会社Sider)(アサハラ アキヒロ)
日本IBM、株式会社フィックスターズなどで、半導体製造装置や医療画像機器など、大小様々な組み込み製品向けのソフトウェア開発プロジェクトに従事。 現在、フィックスターズ子会社の株式会社Sider にて、ソースコードのコピペ管理ツール『CloneTracker』を開発・提供。最新のツールや方法論を用いた、ソフトウェア開発者体験の向上に強い関心を持つ。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
千葉 滋(東京大学情報理工学系研究科教授)(チバ シゲル)
東京大学 情報理工学系研究科 創造情報学専攻 教授
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
