這條規則帶有爭議性。實際上, if
- else
的程式碼結構本身就很直觀,只是說減少 else
的使用可以讓程式碼顯得更加的簡潔。以下幾個方法可以減少 else
的使用
提前返回
protected function getStoredRole($role)
{
if (is_numeric($role)) {
return self::find($role);
}
if (is_string($role)) {
return self::where('name', $role)->first();
}
return $role;
}
丟擲異常
public function toJson($options = 0)
{
$json = json_encode($this->jsonSerialize(), $options);
if (JSON_ERROR_NONE !== json_last_error()) {
throw JsonEncodingException::forModel($this, json_last_error_msg());
}
return $json;
}
手工捕獲異常
function inverse($x) {
if (!$x) {
throw new Exception('除數為 0');
}
return 1/$x;
}
try {
inverse(0) . "\n";
} catch (Exception $e) {
return $e->getMessage();
}
使用工廠方法重構業務邏輯
function singUp($subscription)
{
if($subscription == 'monthly')
{
$this->createMonthlySubscription();
}
else if ($subscription == 'forever')
{
$this->createForeverSubscription()
}
}
重構
function singUp(Subscription $subscription)
{
$subscription->create();
}
// 工廠方法
function getSubscriptionType($type)
{
if($type == ' forever')
{
return new ForeverSubscription;
}
return new MonthlySubscription;
}
$subscription = getSubscriptionType($type);
signUp($subscription)
本作品採用《CC 協議》,轉載必須註明作者和本文連結