リファクタリング
ソースコードを書き換えるよ
プログラムの動きは変えないよ
ソースコードを見やすくしたり無駄な処理を省くためにやるよ
簡単に書くよ
リファクタリング(英:refactoring)とは
人間語で書いたプログラムの元ネタを「ソースコード」と言うのですけどね。プログラムの動きを変えないまま、ソースコードを書き換えること
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ソースコード」について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
ソースコードは「人間語で書いたプログラムの元ネタ」です。
プログラムを作って動かすまでの一般的な流れは
1.人間語でプログラムの元ネタを書く
2.元ネタを人間語から機械語に翻訳する
3.翻訳された指示に従って、コンピュータさんが お仕事する
です。
コンピュータさんは人間語が分かりません。
人間様はコンピュータさんの言葉が分かりません。
プログラムは人間様が作るものです。
そこで最初は人間様が分かる言葉でプログラムを作ります。
コンピュータさんに対する「あれをやれ」「これをやれ」な命令を人間語で書くのです。
次に人間語で書いたプログラムの元ネタをコンピュータさんが分かる言葉に翻訳します。
実際に お仕事をするのは、コンピュータさんですからね。
コンピュータさんが分かる言葉に変換する必要があるのです。
コンピュータさんが分かる言葉に翻訳したので、コンピュータさんは命令の内容を理解できます。
指示に従って、お仕事をしてくれるでしょう。
かなり簡略化した説明ですけどね。
これがプログラムを作るときの流れです。
この話で登場した
人間語で書いたプログラムの元ネタ
を「ソースコード」と言います。
以上を踏まえて
プログラム自体の動きは変えないように気を付けつつ、ソースコードを書き換える作業
が「リファクタリング」です。
リファクタリングは
1.無駄な処理を省いて処理の流れを分かりやすくする
2.ソースコードを見やすくする
3.仕事してる感を出す
のような目的でやります。
例えば、そうですね。
ピヨ太君は今日の昼間、テレビの3分クッキングを見ていました。
おっと、この料理は美味しそうです。
殴り書きでレシピを書きとめました。
そのレシピを夕食で再現してみたところ、やっぱり美味しかったです。
これはレパートリーに入りますね。
そこで、殴り書きしていたレシピを きちんと書き直しました。
次に作るとき見やすいようにです。
この話におけるレシピがソースコードだと思ってください。
料理がプログラムです。
レシピを書き直す作業がリファクタリングになります。
もう少し実際のプログラムに近い例も見てみましょう。
ピヨ太君が以下の処理を書きました。
処理の内容は「"aa"でも"bb"でも"cc"でもないときは"dd"って表示してね」です。
if($str != "aa"){
if($str != "bb"){
if($str != "cc"){
print "dd";
}
}
}
ピヨ太君は満足して眠りにつきました。
次の日、ピヨ太君は自分の書いた処理を見直しました。
入れ子が多くて見にくいです。
そこで以下のように書き換えました。
処理の内容は同じです。
「"aa"でも"bb"でも"cc"でもないときは"dd"って表示してね」です。
if($str == "aa"){
//何もしない
}else if($str == "bb"){
//何もしない
}else if($str == "cc"){
//何もしない
}else{
print "dd";
}
好みの問題は ありますけどね。
書き換えた後の方が直感的に分かりやすい気がします。
ピヨ太君は、処理の内容(プログラムの動き)は変えないまま、ソースコードを書き変えました。
そんなことをした目的はソースコードを見やすくするためです。
この話におけるピヨ太君のやったことがリファクタリングです。
処理内容は変えないでソースコードを書き換える作業
です。
一言でまとめるよ
まぁ「リファクタリング」って単語が出てきたら「ソースコード
(人間語で書いたプログラムの元ネタ)をキレイにするんだな~」と お考えください。
おまけ
■訳してみるよ
「re(リ)」という接頭辞が付くと「再び」とか「後ろへ」とか「反対に」のような意味になります。
「factoring(ファクタリング)」は「factor(ファクタ)」+「ing」です。
「factor(ファクタ)」の意味は「要素」とか「要因」とかです。
何となく くっつけると
再び要素ing
となります。
どう訳せば良いのか分かりませんでした。
ゴメンなさい。






