Substitute Algorithmとは、コード内で使用されているアルゴリズムを置き換えるというリファクタリングです。
リファクタリングなので外からの動作は変わらないのですが、アルゴリズムの部分をわかりやすいように書き直したり、汎用性の高いアルゴリズムに置き換えたり、計算速度の速いアルゴリズムに書き換えたりします。
以下の例はCODE COMPLETEからの引用で、リカーシブ(再帰)を使用しない方が良い例です。
階乗(n!)の計算をするプログラムですが、リカーシブ(再帰)を使用しないアルゴリズムの方がすっきりしていてコードも見やすく、
スタックオーバーフローなどのエラーにも強くなります。
リファクタリング前:
int Factorial(int number)
{
if(number == 1)
{
return 1;
}
else
{
return number * Factorial(number - 1);
}
}
リファクタリング後:
int Factorial(int number)
{
int intermediateResult = 1;
for(int factor = 2; factor <= number; factor++)
{
intermediateResult = intermediateResult * factor;
}
return intermediateResult;
}
|
Copyright(c) 2012 WoodenSoldier Software |