行。我的IDE中出现了代码异味警告。我理解为什么,并明白警告并不是特别可怕。但是,如果有更好的方法来编写这个块,我想知道。
public function factory($state_name = 'Generic')
{
...
try {
if (!$class_exists) {
throw new CustomException;
} else {
return new $class_name;
}
}
catch (CustomException $c) {
echo ...
}
}
我没有在try
区块之外返回值。如果我最后回来,气味就会消失。有更好的方法吗?
答案 0 :(得分:1)
对我来说更大的代码味道是你抛出一个异常,然后立即抓住它。您似乎正在这样做以避免返回任何内容,当然,您的IDE正在抱怨。 我会把它重写为:
public function factory($state_name = 'Generic')
{
...
if ($class_exists) {
return new $class_name;
}
return null;
}
答案 1 :(得分:1)
您的函数是一个工厂,应该隐式返回它创建的内容。在像Java这样的静态类型语言中,你必须声明一个返回类型,并且必须返回一些东西。用静态类型语言编写的函数不会编译。我们没有PHP的这些问题所以你能够做到这一点,但它肯定是有臭味的。让你的功能在一致的庄园中表现出来是一种很好的做法,即无论发生什么事情都会返回。我会在你的try / catch之后返回null,并且总是检查从这个函数返回的值,无论它在哪里使用。