"如果"分配是一种很好的做法?

时间:2014-09-05 09:05:51

标签: php coding-style

考虑这种情况:

大代码:

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以获取用户,但在第二次只有一次... 第二种情况,是一种很好的做法吗?

3 个答案:

答案 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
}