【问题标题】:A positive result in if or Else?if 或 Else 的阳性结果?
【发布时间】:2011-09-15 12:58:29
【问题描述】:

这是基于编码风格的,想知道是否最好将 if/else 决定的积极结果放在 if 或 else 块中。例如是:

    yes_no = object.get() #Response will be 'yes' or 'no'
    if yes_no == 'yes':
        yes response
    else:
        no response

优于:

    yes_no = object.get() #Response will be 'yes' or 'no'
    if yes_no != 'yes':
        no response
    else:
        yes response

据我所知,没有区别,因为它们都在寻找“是”并输出“是”响应,但有没有人们遵循或发现更容易阅读的样式?

我正在使用 python,但由于 if/else 无处不在,我猜其他语言也相关。

编辑:没有响应的替换通行证,因为这是不必要的。

【问题讨论】:

  • 为什么需要 pass 语句?它只是这个例子的细节 - 还是你实际上会做的事情?第一个例子的最后两行完全是多余的。
  • 为什么这是一件需要担心的重要事情?简单的“清晰”不是很容易建立吗?你有什么问题?有没有人和你吵架?是否存在性能问题?
  • 澄清一下,我没有任何看起来像这样的东西,但我真的不想编辑和重新排列大部分代码以跟上样式规则我不知道什么时候写的。我希望“否/是”的回答现在能更好地澄清它。

标签: python coding-style if-statement


【解决方案1】:

我认为这主要取决于程序员想要强调的内容。 IF 条件应该是:

  • 最可能的
  • 最简单的
  • 计算量少的那个
  • 更具可读性
  • ...

我个人总是尽量避免这种情况:

if condition:
    ... tons of code ...
else:
    ... one line of code ...

【讨论】:

    【解决方案2】:
    • 大多数情况下,避免双重否定(如!is_no)会更简洁
    • 不管条件是什么,先放出早期语句:

      if(!a): 
          return
      else:
          long 
          sequence
          of
          statements
      

    【讨论】:

      【解决方案3】:

      这完全取决于您程序的逻辑。如果使“积极”条件有意义,则使其成为积极条件。如果它是一个否定的“条件”,那么就让它成为一个否定的条件。对于任何一种类型的条件,都没有固定的风格规则,或者至少我不知道。

      【讨论】:

        【解决方案4】:

        我可以给你的最好建议是在你的代码中做最好的阅读,不要打扰不添加任何东西的代码路径。我会将您的代码修改为:

        yes_no = object.get() #Response will be 'yes' or 'no'
            if yes_no == 'yes':
                yes response
        

        如果没有针对no 条件的操作,则没有理由检查它。我还将修改“get”以使其更清楚为什么它返回是或否响应。事实上,object.get() 相当模糊。

        【讨论】:

          【解决方案5】:

          如果您的方法只返回两个值之一,请使用return Truereturn False,而不是任意字符串。而且您可能应该重命名它,以便方法名称有意义。

          那你就可以了

          if object.get():
              # do something
          else:
              # do something else
          

          if not object.get():
              # do something
          else:
              # do something else
          

          如果只有一种情况实际上会导致响应,则省略 else

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-06-05
            • 1970-01-01
            • 2022-08-18
            • 1970-01-01
            • 1970-01-01
            • 2012-05-11
            • 2017-07-20
            • 1970-01-01
            相关资源
            最近更新 更多