条件文の簡略化


📌 条件文の分割


他の人のコードを表示したり、コードを記述したりすると、条件文に複雑な内容が含まれる場合があります.
この方法の目的は,条件付き関数を抽出し,コードを読みやすくすることである.

再包装前のソース

class Simple_Example{
	void Example(){
    	if(date < SUPPER_STAR || date > SUPPER_END)
        	charge = quantity * winterRate + winterServiceCharge;
        else
        	charge = quantity * summerRate;
    }
}
ドアの中の条件が複雑だったら・・・
chargeの値を代入するのは複雑すぎます...

再包装したソース

class Simple_Example{
	void Example(){
    	if(isNotSummer())
        	charge = CalculateWinterRate();
        else
        	charge = CalculateSummerRate();
    }
}

private bool IsNotSummer(){
	return date < SUPPER_STAR || date > SUPPER_END;
}

private bool CalculateWinterRate(){
	return quantity * winterRate + winterServiceCharge;
}

private bool CalculateSummerRate(){
	return quantity * summerRate;
}
条件を関数に代入!
コードの増加または認識が容易

📌 冗長条件式の統合


条件文が連続している場合は、条件式を使用してマージします.

再包装前のソース

if(anEmployee.seniority < 2) return 0;
if(anEmployee.MothsDisabled > 12) return 0;
if(anEmployee.isPartTime) return 0;

再包装したソース

if(isNotEligableForDisability()) return 0;

function isNotEligableForDisability(){
	return ((anEmployee.seniority < 2)
    		|| (anEmployee.MothsDisabled > 12)
            || (anEmployee.isPartTime));
}

📑 References


https://arisu1000.tistory.com/27589
https://arisu1000.tistory.com/27585