Syntax 如果if包含退货,我是否应该使用else?

Syntax 如果if包含退货,我是否应该使用else?,syntax,Syntax,我在书中列举了一些例子,我注意到有两种不同的约定,用于不同的返回条件。这两者有什么区别吗 //example 1 if(someCondition) { return (someValue); } return (someOtherValue); //example 2 if(someCondition) { return (someValue); } else { return (someOtherValue); } 就个人而言,我更喜欢第二个示例,因为它更明确,而且我觉

我在书中列举了一些例子,我注意到有两种不同的约定,用于不同的返回条件。这两者有什么区别吗

//example 1
if(someCondition)
{
   return (someValue);
}
return (someOtherValue);

//example 2
if(someCondition)
{
   return (someValue);
}
else
{
   return (someOtherValue);
}

就个人而言,我更喜欢第二个示例,因为它更明确,而且我觉得它更可读。

如果您的语言包含条件运算符,我建议使用它

return condition ? ifTrue : ifFalse;

除了外表之外没有什么不同。无论您选择哪一种,两者都将返回相同的结果。

使用您喜欢的、最适合您的代码或您的团队最了解的内容


据我所知,这方面并没有什么惯例

就我个人而言,我认为在一个方法中有一个return语句总是好的,否则代码可能有点难读,因此无法维护。所以做些类似的事情

def returnVal = default;

if (cond) {
 returnVal = whatever
}

return returnVal

就个人而言,当您从函数/方法调用中消除无效状态时,会经常出现这种情况。例如:

sqrt(x) {
    if(x < 0)
        return 0;

    answer=math;
        return(answer);
sqrt(x){
if(x<0)
返回0;
答案=数学;
返回(回答);
如果你使用ELSE,你可能会有很多非常可怕的筑巢

这还涉及到“单返回”理论——许多人认为一个方法应该只有一个返回语句。这在某些情况下也会导致混乱

在你的具体例子中,它是50/50


做你喜欢做的事,但我强烈建议尝试一下“立即测试并返回简单案例”理论。

避免
否则
并利用早期
返回
可以避免代码嵌套太深。哪个示例看起来更具可读性

function doStuff (thing) {
  if (thing.foo) {
    alert ("thing.foo is alive and well");
    if (thing.foo.bar) {
      alert ("thing.foo.bar is alive and well");
      if (thing.foo.bar.baz) {
        alert ("thing.foo.bar.baz is alive and well");
        // TODO: stuff with thing.foo.bar.baz
      } else {
        alert ("thing.foo.bar.baz doesn't exist!");
      }
    } else {
      alert ("thing.foo.bar doesn't exist!");
    }
  } else {
    alert ("thing.foo doesn't exist!");
  }
}


…我认为第二种更具可读性!

或者,在工作中,您可以选择不使用会迫使某些人额外花费几秒钟(到几分钟)的运算符分析和可能的讨论。我已经看到这浪费了很多时间,我从来没有见过一个简单的if/then创建相同类型的时间接收器。在家里,当然,越有趣越好。我喜欢这种速记,但它只有在代码简单时才有用。@Pasha-你当然可以将复杂的逻辑移到它自己的方法中。
返回条件?DoSomethingSpecific():DoSomethingElseSpecific();
理论上我同意,但如果多次尝试让代码只有一个返回,则会使它变得比需要的更复杂。保持函数中的行数小有助于多个返回看起来清晰易懂。是的,这更像是一种“艺术”偏好。我只是认为每个方法一个返回语句看起来很好,而且让事情变得干净。这意味着希望有小方法开始,这也很有帮助。另一个论点是像Eclipse和Intellij这样的IDE都会对此发出警告。试图找出方法返回的位置可能会让人非常困惑。除非最后只有一个返回…我认为当大多数函数调用趋向于在几百或几千行范围内运行时,返回的东西被肯定地使用——在这一点上,在中间找到一个隐藏的返回是地狱。现在我们编写了更小的方法,这一点没有多大帮助(如果有的话)。,但许多人坚持这样做,因为人是习惯性的生物,一旦你告诉某人这是最好的方式,或者这样看起来更好,他们往往会坚持这样做,通常是出于宗教信仰。
function doStuff (thing) {
  if (!thing.foo) {
    alert ("thing.foo doesn't exist!");
    return;
  }
  alert ("thing.foo is alive and well");
  if (!thing.foo.bar) {
    alert ("thing.foo.bar doesn't exist!");
    return;
  }
  alert ("thing.foo.bar is alive and well");
  if (!thing.foo.bar.baz) {
    alert ("thing.foo.bar.baz doesn't exist!");
    return;
  }
  alert ("thing.foo.bar.baz is alive and well");
  // TODO: stuff with thing.foo.bar.baz       
}