背景
リファクタリングする機会があり、本「リファクタリング: 既存のコードを安全に改善する」を閲覧しながら行なった。
実際のコードで行うのは初心者にとってはなかなか難しい内容だったため、備忘録として整理しておきたい。
目的
関数の抽出、で行なったことを振り返り、
他の場所でもリファクタリングができるようにする。
3パターンの違い
1. メソッドとして抽出したいコード群にローカル変数が含まれてい"ない"場合
単純で下記の3ステップで終了する。
- 関数名を記載
- メソッドとして抽出したいコード群をコピー&ペースト
- 元のコード群をメソッド名に置き換え
2. メソッドとして抽出したいコード群にローカル変数が含まれて"いる"場合
上記に、引数としてローカル変数を渡す。
3. ソッドとして抽出したいコード群にローカル変数が含まれていて、かつ値を代入している場合(具体的なコード例あり)
手順としては下記になる。具体的にコード例で見ていく。
- ローカル変数の定義をメソッドとして抽出したいコード群の近くに移動する。
- 関数を作成
- 呼び出し元を変更
// リファクタリング前
let a = 1;
let b = 2;
a = b + 1; //これをメソッドにしたい
console.log(a);
// 手順 1 宣言を移動
let b = 2;
let a = 1; //宣言を移動
a = b + 1;
console.log(a);
// 手順 2 関数を作成
let b = 2;
let a = 1;
a = b + 1;
console.log(a);
// 関数を作成
function bPlusOne(b){
a = 1;
a = b + 1;
return a;
}
// 手順 3 呼び出し元を変更
let b = 2;
let a = bPlusOne(b); //呼び出し元を関数の呼び出しに置き換える
console.log(a);
function bPlusOne(b){
a = 1;
a = b + 1;
return a;
}
学び
最初は単純そうに見えていた関数の抽出も、ローカル変数を使用しているか?再代入しているか?で難しく見えた。実際のコードに適用したときはさらに難しかったため、整理しながら理解していきたい。
次
レコードのカプセル化も、実施したため備忘録のため残す予定。