考虑这种情况:
大代码:
if($site->getUser($id)){
$user = $site->getUser($id);
//more code here
}
短代码:
if($user = $site->getUser($id)){
//already have the user
//more code here
}
在第一种情况下,我做了2次访问bbdd以获取用户,但在第二次只有一次... 第二种情况,是一种很好的做法吗?
答案 0 :(得分:0)
我更喜欢这个。
$user = $site->getUser($id);
if($user){
//more code here
}
通常,应避免条件中的分配。许多编程语言甚至不再允许它。太容易犯错误。 它在可读性方面也更好。
答案 1 :(得分:0)
在任何情况下反复调用可能很昂贵和/或有副作用的功能肯定不是一件好事,因此通常应避免使用第一个样本。例外情况可能是该方法纯粹是一种不执行任何逻辑代码的被动getter方法;但由于这种实施可能会改变,你仍然应该避免它。
if ($foo = bar()) ...
针对上述情况可以说,混淆=
和==
的拼写错误并不少见,因此这可能会导致错误和/或对未来开发人员阅读代码造成不必要的混淆。争议最少的方法应该是:
$foo = bar();
if ($foo) ...
但是,有些人更愿意将其缩短为if-in-if;这是一种风格选择。
答案 2 :(得分:0)
是的,在我看来。 但是,我习惯于这样的代码。
if($user = ($site->getUser($id) ) ){
//already have the user
//more code here
}
警告此
if($flag = $usrType == $type) ){
//already have the user
//more code here
}