リファクタリングとは?後で後悔しないためのプログラミング

ざっくりと

  • コードを整理する
  • プログラムの動きは変えない
  • 後で読みやすくする

リファクタリングとは、表示を変えずコードを整理することです。

概要説明

リファクタリングとはコードを整理する行為である。なぜならば、長期的なプロジェクトでコードが複雑になりがちだから。例えば、新しい機能を追加するたびにコードが増える。そして、そのコードが読みにくくなる。つまり、後でコードを理解しやすくするため。だから、品質を保つ。

職業職種

  • ソフトウェアエンジニア
    ソフトウェアエンジニアは、リファクタリングを頻繁に行う。なぜなら、コードの品質を保つため。例えば、新機能の追加やバグの修正。
  • プロジェクトマネージャー
    プロジェクトマネージャーも、リファクタリングの重要性を理解している。なぜなら、コードの品質がプロジェクトの成功に直結するから。例えば、開発スケジュールの管理。
  • テストエンジニア
    テストエンジニアは、リファクタリング後のコードが正しく動作するかを確認する。なぜなら、リファクタリングはバグを生む可能性もあるから。例えば、単体テストや結合テスト。

リファクタリングは、名前の由来は英語の”Refactor”から来ています。”Refactor”は「再構築する」や「整理する」という意味です。

代表例

  • ソニー
    ソニーは、リファクタリングで有名である。なぜなら、プレイステーションのソフトウェア開発において高い品質を維持しているから。例えば、PS5のシステムソフトウェア。
  • LINE
    LINEは、リファクタリングで名高い存在である。なぜなら、頻繁にアップデートを行いつつ、アプリの品質を高く保っているから。例えば、LINEメッセンジャーアプリ。
  • マーチン・ファウラー
    マーチン・ファウラーは、リファクタリングで世間に知られている。なぜなら、リファクタリングの手法や重要性について多くの著作をしているから。例えば、”Refactoring: Improving the Design of Existing Code”という本。

手順例

以下は、リファクタリングの基本手順です。
  1. コードの確認
    最初に、修正するコードを確認する。なぜなら、どの部分が問題かを把握する必要があるから。例えば、冗長なコードや複雑な処理。
  2. テストの実施
    次に、テストを行う。なぜなら、リファクタリングで機能が壊れないか確認する必要があるから。例えば、単体テストや結合テスト。
  3. コードの修正
    コードを修正する。なぜなら、それがリファクタリングの主目的だから。例えば、変数名の変更やメソッドの分割。
  4. 再テスト
    修正後、再度テストを行う。なぜなら、修正によって新たな問題が生じないか確認する必要があるから。例えば、全体の機能テスト。
  5. ドキュメントの更新
    最後に、ドキュメントを更新する。なぜなら、変更内容を明確にしておく必要があるから。例えば、コメントや設計書。

類似語

  • コードクリーニング
    コードクリーニングは、リファクタリングの類似語である。なぜなら、どちらもコードを整理する目的があるから。例えば、不要なコメントの削除。
  • 最適化
    最適化は、リファクタリングの類似語である。なぜなら、効率を上げる目的があるが、リファクタリングは機能を変えない点で異なる。例えば、計算速度の向上。
  • デバッグ
    デバッグは、リファクタリングの類似語である。なぜなら、コードの問題を解決する点で共通しているが、デバッグはバグを修正する目的がある。例えば、エラーの修正。

反対語

  • コードの硬直化
    コードの硬直化は、リファクタリングの反対語である。なぜなら、リファクタリングはコードを整理して理解しやすくするが、硬直化はその逆で、コードが複雑になるから。例えば、コメントもなく冗長なコード。
  • 機能追加
    機能追加は、リファクタリングの反対語である。なぜなら、リファクタリングは機能を変えずにコードを整理するが、機能追加は新しい機能を加えるから。例えば、新しいボタンの追加。
  • バグの導入
    バグの導入は、リファクタリングの反対語である。なぜなら、リファクタリングはコードの品質を高める目的があるが、バグの導入はその逆であるから。例えば、計算エラー。

会話例

  • プログラマー同士の会話でのコードレビュー
    「このコード、リファクタリングした方がいいかな?」
    「うん、ちょっと読みにくいからリファクタリングしよう。」
  • プロジェクトマネージャーとプログラマーの進捗確認
    「リファクタリングの時間はどれくらい必要?」
    「大体一日かかると思う。」
  • テスターとプログラマーのバグ報告
    「このバグ、リファクタリングのせい?」
    「確認するけど、多分リファクタリングが原因じゃないよ。」

注意点

リファクタリングを行う時の注意点はテストである。なぜならば、機能が壊れていないか確認する必要があるからだ。例えば、単体テストである。そして、ドキュメントも更新する。だから、計画的に行う。

リファクタリングとコードクリーニングは、間違えやすいので注意しましょう。

リファクタリングは、コードの構造を改善します。

一方、コードクリーニングは、コードを綺麗にするだけです。

記事を書いてる人

ガラケー時代からWEB開発やってる自宅SE です。

「○○を知りたい!!」「○○が分からない!!」などありましたら、Twitterでもブログでもコメントいただければ、ご期待に添えるように頑張ります!

ネット事件簿チャンネルを運営しているので、YouTubeもぜひ覗いてみてください!!

雨おやじのSNSを覗く!!
IT用語辞典
雨おやじのSNSを覗く!!
ITkagyo

コメント