[英]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.