H25 技術士(情報工学)ソフトウェア工学 II-1-3:リファクタリング


(1)リファクタリングの目的
リファクタリングとはプログラムの入出力を変更せずに、内部構造を変更することで、リファクタリングの目的は構造が複雑になってしまったプログラムを書き直すことでわかりやすくしたり、修正を容易にすることである。
(2)リファクタリングの手法
リファクタリングの例としては、外部変数を関数の内部変数にすることがある。これは、複数の関数で使用するために外部変数と宣言したものの一つの関数でしか使用していない変数を内部変数にすることで関数の理解が容易になる。
次に関数の引数の整理がある。引数として用意したが使用していない変数を削除したり、共通の外部変数としているものを引数にし、関数の構造をわかりやすいものにする。
あとは、条件式の整理がある。プログラムの開発途中で仕様が変更になったりして、条件式が複雑でわかりやすいものになってしまうことが多いので、シンプルでわかりやすい条件式に書き換える。
(3)リファクタリングを行うときの留意点
リファクタリングによるプログラムの変更により動作が変わらないことの確保が重要である。そのため、リファクタリング前と後で入力と出力に関して同様のテストを行い結果に差がないことを確認する必要がある。


[Intermission]
後継製品の開発などで、古いソースを流用しようとして、あまりの出来の悪さにびっくりした経験をお持ちの人も多いと思いますが、そういったときはリファクタリング可能かPMやPLに確認しましょう。
多くの場合、リファクタリングのための時間も費用もないといわれると思いますが、そういうときは"今のソースは出来が悪くて理解できず、デバッグは困難で面倒見られない"とはっきり言いましょう。
私などは重箱の隅をつつくように問題を(あげつら)いリファクタリングの必要性を説きます。たとえ、元のソースの作成者がPMや上長であったとしても…。



戻る 一覧へ