Replace Nested Conditional with Guard Clauses

A method has conditional behavior that does not make clear what the normal path of execution is

Use Guard Clauses for all the special cases


double getPayAmount() {

	double result;

	if (_isDead) result = deadAmount();

	else {

		if (_isSeparated) result = separatedAmount();

		else {

			if (_isRetired) result = retiredAmount();

			else result = normalPayAmount();

		};

	}

return result;

};	


double getPayAmount() {

	if (_isDead) return deadAmount();

	if (_isSeparated) return separatedAmount();

	if (_isRetired) return retiredAmount();

	return normalPayAmount();

};	

For more information see page 250 of Refactoring

| Refactoring Home | | Alphabetical List |