繁体   English   中英

如果条件在上下文方面具有可比性,则保持 if/else 是一种好习惯?

[英]It is a good practice to keep if/else if conditions comparable in terms of context?

我实际上不知道如何正确表达这个问题,提前道歉。

在我的代码审查中,人们向我建议 if 和 else 条件本质上应该具有可比性,如下所示:

if (a == 0)..
else if (a == 1)
else if (a != 3)
else...

基本上,这些是在同一业务 scope - 在这种情况下为 var a进行评估。

一个极端的反例是:

if (a == 0)
else if (window.size != server.config.size)
else if (user.b == this.user)
else...

灰色区域的一些东西:

if (a == 0)
else if (b == c)

对比

if (a == 0)
else { // implying a != 0
    if (b == c)
}

我还没有在这个基本的东西中找到任何编程实践/指南。 请让我知道有任何关于人们如何组织他们的参考。

有时真的很难找到编写任何逻辑的正确方法。 特别是,有不止一种方法可以实现相同的目标。 我想,这对你来说也是同样的情况。

在我的日常编码经验中,在代码审查期间,我也面临这些情况。 您就在这里,您想了解编程实践,即使我尝试在这些情况下找到适当的编程实践或指南,但我们/您应该首先非常正确地了解我们的要求,以决定我们应该遵循哪种方法。

我不确定“本质上可比”是什么意思,但是您的同事尝试根据变量或条件保留单独的 if/else 语句,并且对于不同的变量/条件,他们使用不同的 if/else 语句。

意思是,你应该将你的 if/else 分成两个不同的 if/else,用于不同的变量/条件。 通过了解您的要求,您可以非常正确地打破。

但是你可以多想一想,尽可能多地问自己为什么,你会找到一个正确的答案。

让我知道它是否对您有帮助。 快乐的编码......!

在适当的位置括号/插入括号有助于执行正确的代码。 在编写代码时需要牢记这一点。

谈到您的“if/else if”案例,您提到的案例:

if(a==0)
else if(a==1)
else if(a!=3)

只要案例之后只有一条执行语句,上述代码就可以工作。 从某种意义上说,如果您的代码如下所示:

if(a==0)
    System.out.print("CASE 1");
else if(a==1)
    System.out.print("CASE 2");
else if(a!=3)
    System.out.print("CASE 3");

上面的代码可以正常工作,但如果您有多个语句,则需要括号,例如:

if(a==0)
    {
      System.out.print("CASE 1");
      System.out.print("The value of a equals to 0.");
    }
else if(a==1)
    {
      System.out.print("CASE 2");
      System.out.print("The value of a equals to 1.");
    }
else if(a!=3)
    {
      System.out.print("CASE 3");
      System.out.print("The value of a does NOT equal to 3.");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM