【问题标题】:It is a good practice to keep if/else if conditions comparable in terms of context?如果条件在上下文方面具有可比性,则保持 if/else 是一种好习惯?
【发布时间】:2020-05-25 03:39:28
【问题描述】:

我真的不知道如何正确表达这个问题,提前道歉。

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

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

基本上,这些都是在相同的业务范围内进行评估 - 在本例中为 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 语句块很容易让人理解。您的第二个(编造的)示例在没有上下文的情况下对于一个人来说是不可能理解的,最好的通用编程指南是:编写代码以使人们(包括六个月后的您自己)更容易理解代码和上下文代码。
  • 您是否发现任何答案比至少投票或对答案的反馈有用。

标签: java coding-style code-cleanup


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    【解决方案2】:

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

    谈到你的'if/else if'案例,你提到的案例在哪里:

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

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

    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.");
        }
    

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多