在每个if条件中都必须写else部分吗?

18 浏览
0 Comments

在每个if条件中都必须写else部分吗?

我可能会被关闭问题,但我对于编程中是否总是需要在每个“if”语句中添加一个“else”部分很好奇。一位资深程序员告诉我:“你应该在每个‘if’语句中都有一个‘else’部分。”然而,如果没有理由包含一个“else”部分,我们该怎么办呢?我认为这可能会引发一场有趣的讨论。

0
0 Comments

在大多数编程语言中,你不一定要在每个if条件中写else部分。这种情况下会增加不必要的嵌套,使代码难以阅读。在我使用的语言(Java, C#)中,"提前退出"的模式是相当常见的,这适用于返回值和异常处理。在某些情况下,如果两个分支都是终止分支,但没有一个是有效的快捷方式,是否应该省略else部分就是一个值得讨论的问题。这主要取决于个人选择和代码的可读性。如果两个分支的缩进相等,它们会给人一种相等的重要性的感觉,而且或许会鼓励以后通过反转条件来进行重构。然而,如果我们直接跳到"return original price",将其放入if块中并将折扣情况移出if块的重构可能不太容易在一开始就正确地看出来。

0
0 Comments

在命令式语言中,如Java和C,if-else是一个语句,不返回任何值。因此,你可以只写if部分而不用写else部分。这被认为是最佳实践,而不是在每个if后面添加空的else。

然而,在函数式语言中,如Haskell和Clojure,if是一个表达式,它必须返回一个值。因此,它必须带有一个else部分。然而,仍然有一些情况下你可能不需要一个else部分。Clojure针对这些情况有一个when宏,它将if-else封装起来,在else部分返回nil,并避免编写它。

对于唯一提到if-else表达式的回答,给予+1的点赞。

0
0 Comments

在每个if条件中写else部分是必要的吗?

这个问题的出现的原因是,有人认为在每个if条件中写else部分会使代码更可读和易于维护,但有人则认为这是一个可怕的主意,会导致代码冗余和可读性降低。

解决方法之一是在else语句中使用空语句来表示已考虑了else情况。这种做法可能有些过度,但至少要考虑else情况。如果一个if条件没有else部分,除非原因很明显,可以使用注释来解释为什么不需要else部分。

有人认为这本书中的观点需要放在上下文中来理解。每个人编写的代码都是经过深思熟虑的结果。对于一个缺少else部分的if条件,一个合格的程序员会知道不需要采取任何操作。就像对待缺少的七行代码一样,你不会阅读一个函数并对未放置在末尾的七行代码感到困惑,这就是对缺少else部分的态度。

这本书的问题在于,有时会提出非常明显或初级的观点。例如,在前面的一页中,它说应该避免if-then-else语句,其中if块在其主体中没有语句,而是对测试条件进行取反。虽然我并不抱怨,但我宁愿选择一本明显的书,而不是包含晦涩难懂之处的书,因为作者在明显与非明显之间划定了界限(这可能根本不可能,因为每个人的知识和经验都不同)。

是否在每个if条件中写else部分是一个有争议的问题。一些人认为这样做有助于代码的可读性和可维护性,而另一些人则认为这是冗余的。解决方法之一是在else语句中使用空语句来表示已考虑了else情况,或者使用注释来解释为什么不需要else部分。然而,每个人对这个问题的看法可能不同,因此需要根据具体情况进行判断。

0