我讀Code Complete並且在它是警告不要使用變量具有雙重目的,例如以下語句:方法可以返回一個錯誤或數組 - 錯誤的實現?
1) If a variable is a number, it contains error code.
2) If a varibale is array, it contains data.
而這正是我在做什麼在我的程序與變量$text
在下面的代碼片斷:
$text = $editor->getTextForLinking($data_array['idText']);
if (Arr::is_array($text)) {
...
} else {
Log::instance()->add(Log::Error, $text);
$this->response->body("Text can't be retrieved");
}
我有權訪問方法getTextForLinking(),所以它可以被改變。如何改變以排除雙重目的的不良情況?
我不想使用異常這樣的:
$text = Array();
try {
$text = $editor->getTextForLinking($data_array['idText']);
} catch(SomeException $e) {
Log::instance()->add(Log::Error, $text);
$this->response->body("Text can't be retrieved");
}
可能聽起來很愚蠢,但爲什麼不是空陣列? –
因爲我不知道在db中是否沒有這樣的文本,或者在方法執行過程中是否發生了一些錯誤。是否有意義? –
是的,但應該轉移到方法本身。提供相同的返回類型有助於保持一致性,所以你總是知道你得到了一個數組(空或不是) - 如果沒有文本,或者有錯誤,這是函數在內部處理相應情況的職責。 –