我有一个关于else条件的冲突。我可以用两种方式编写程序。其他语句的用法
方法1
$msg = ''; if(cond) { $msg = 'success'; } else { $msg = 'error'; }
方法2
$msg = 'error'; if(cond) { $msg = 'success'; }
能否请你告诉我哪一种方法更好,怎么样?由于
我有一个关于else条件的冲突。我可以用两种方式编写程序。其他语句的用法
方法1
$msg = '';
if(cond)
{
$msg = 'success';
}
else
{
$msg = 'error';
}
方法2
$msg = 'error';
if(cond)
{
$msg = 'success';
}
能否请你告诉我哪一种方法更好,怎么样?由于
在这两者之间,我会选择第一个。
$msg = '';
if(cond) {
$msg = 'success';
} else {
$msg = 'error';
}
这是可读的,并清楚地表达了它试图做的事情。 如果条件成立,则消息将是success
。如果不是,则消息将是error
。
但是对于上面的一些非常简单的东西,我会使用三元语句代替。这是非常有用的,可以减少代码,但可能会使您的代码在某些情况下无法读取:
$msg = (cond) ? "success" : "error";
很酷,对不对?在这里阅读更多关于ternary operators。
$msg = (cond) ? 'success' : 'error';
我想说第二个更好,因为它是少线,它有一个默认行为。无论如何,即使您在路上添加其他检查,您也知道$ msg将包含某些内容。不过,我想使用三元运算在这种情况下:
$msg = (cond) ? 'success' : 'error';
代码的可读性问题,所以我会用三元运算符当它真正简化了的样子。 考虑这一点,
function foo($stuff) {
$var = null;
if ($stuff === true) {
$var = true;
} else {
$var = false;
}
return $var !== null ? true : false;
}
因为在这种情况下,return $var !== null ? true : false
很短,它可以被视为“容易阅读和理解”。
考虑这一点,
function foo($stuff) {
$var = null;
if ($stuff === true) {
$var = true;
} else {
$var = false;
}
if ($var !== null) {
return true;
} else {
return false;
}
}
同样的事,但一点点长
结论
if/else
坚持你也应该把这个事情“办法”,而不是“法”,因为一个方法是一个类中的一个函数。
'$ msg =(cond)? '成功':'错误';'? – Nobody
第二个比较好,当然。线条少,行为相同,不会产生影响。 – DontVoteMeDown
在这种情况下,它看起来没有什么区别,但作为一个经验法则,我喜欢将变量设置为“更安全”或更可能的条件,所以如果它变成一长串检查并且我错过了某些东西,或意外发生的事情,它至少有一个默认值。 – Mike