if或Else的结果是肯定的?

时间:2011-09-15 12:58:30

标签: python coding-style if-statement

这是基于编码风格的,想知道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无处不在,我猜其他语言也是相关的。

编辑:替换没有回复的通行证,这是不必要的。

5 个答案:

答案 0 :(得分:3)

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

  • 最有可能的
  • 最简单的
  • 导致计算量减少的
  • 更易阅读
  • ...

我个人总是试图避免这种情况:

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

答案 1 :(得分:2)

  • 大部分时间都避免双重否定(如!is_no
  • 无论条件是什么,首先将早期陈述:

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

答案 2 :(得分:1)

这完全取决于你的程序的逻辑。如果做出“积极”的条件是有意义的,那么就把它作为一个积极的条件。如果它是负面的“条件”,那么将其作为负面条件。对于任何一种类型的条件,或者至少不是我所知道的条件,没有固定的风格规则。

答案 3 :(得分:0)

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

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

如果no条件没有动作,则没有理由检查它。我还会修改“获取”,以便更明显地回答“是”或“否”响应。事实上,object.get()非常模糊。

答案 4 :(得分:0)

如果您的方法只返回两个值中的一个,请使用return Truereturn False,而不是任意字符串。你应该重命名它,所以方法名称意味着什么。

然后你可以做

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

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

如果只有一个案例实际上会导致回复,则省略else