第9章
8361 ワード
データ組織
9.1分割変数
2つ以上のキャラクターの変数があれば、破るべきです.各ロールには変数があります.
プログラム
2つ以上のキャラクターの変数があれば、破るべきです.各ロールには変数があります.
プログラム
例
function distanceTravelled(scenario, time) {
let result;
let acc = scenario.primaryForce / scenario.mass; // ⬅️
let primaryTime = Math.min(time, scenario.delay);
result = 0.5 * acc * primaryTime * primaryTime;
let secondaryTime = time - scenario.delay;
if (secondaryTime > 0) {
let primaryVelocity = acc * scenario.delay;
acc = (scenario.primaryForce + scenario.secondaryForce) / scenario.mass; // ⬅️
result += primaryVelocity * secondaryTime + 0.5 * acc * secondaryTime * secondaryTime;
}
return result;
}
値をacc
変数の2回の部分に分けて代入します.function distanceTravelled(scenario, time) {
let result;
const primaryAcceleration = scenario.primaryForce / scenario.mass; // ✅
let primaryTime = Math.min(time, scenario.delay);
result = 0.5 * primaryAcceleration * primaryTime * primaryTime; // ✅
let secondaryTime = time - scenario.delay;
if (secondaryTime > 0) {
let primaryVelocity = primaryAcceleration * scenario.delay; // ✅
const secondaryAcceleration = (scenario.primaryForce + scenario.secondaryForce) / scenario.mass; // ✅
result += primaryVelocity * secondaryTime + 0.5 * secondaryAcceleration * secondaryTime * secondaryTime; // ✅
}
return result;
}
9.2フィールド名の変更
データ構造はプログラムの理解に大きな役割を果たす.クラスでは、ゲイトメソッドとセイトメソッドの名前は、レコード構造体のフィールド名と同様に重要です.
プログラム
9.3派生変数をクエリー関数に変換
可変データの有効範囲はできるだけ縮小しなければならない.
いずれかの方法で、計算しやすいすべての変数を除去します.ただし、新しいデータ構造を生成する変換演算の場合は、それを保持することが望ましい例外があります.
関数
プログラム
9.4参照を値に置換
オブジェクト(データ構造)が他のオブジェクト(データ構造)にネストされている場合は、内部オブジェクトを参照または値と見なすことができます.リファレンスを使用する場合は、内部オブジェクトは保持され、そのプロパティのみが更新されます.値を使用する場合は、既存の内部オブジェクトを新しいプロパティを含むオブジェクトで置き換えます.
フィールドを値として扱う場合は、内部オブジェクトのクラスを値オブジェクトとして変更できます.値オブジェクトは不変なので、基本的には自由に使用できます.
特定
9.5値を参照に置換
9.6 magic literalの置換
reference
9.6 magic literalの置換
reference
Reference
この問題について(第9章), 我々は、より多くの情報をここで見つけました https://velog.io/@jhcho/리팩터링-9장テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol