[英]How should I fix this code smell in my try/catch block
好。 我在IDE中收到代碼氣味警告。 我理解原因,並了解警告並不是特別嚴重。 但是,如果有更好的方法來編寫此塊,我想知道。
public function factory($state_name = 'Generic')
{
...
try {
if (!$class_exists) {
throw new CustomException;
} else {
return new $class_name;
}
}
catch (CustomException $c) {
echo ...
}
}
我不會在try
塊之外返回任何值。 如果我最后還給我一個,氣味就會消失。 有一個更好的方法嗎?
對我來說,更大的代碼氣味是您引發異常,然后立即捕獲它。 看來您這樣做是為了避免返回任何東西,這當然是您的IDE抱怨的。 我將其重寫為:
public function factory($state_name = 'Generic')
{
...
if ($class_exists) {
return new $class_name;
}
return null;
}
您的函數是一個工廠,應隱式返回它創建的內容。 在諸如Java之類的靜態類型語言中,您必須聲明一個返回類型,並且無論如何都要返回一些內容。 用靜態類型語言編寫的函數將無法編譯。 我們在PHP中沒有這些問題,因此您可以做到這一點,但是肯定可以聞到。 最好的做法是讓函數以一致的方式運行,即無論發生什么都始終返回某些內容。 在您嘗試/捕獲之后,我將返回null,並始終檢查從該函數返回的值,無論它在哪里使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.