在每个if条件中都必须写else部分吗?
在大多数编程语言中,你不一定要在每个if条件中写else部分。这种情况下会增加不必要的嵌套,使代码难以阅读。在我使用的语言(Java, C#)中,"提前退出"的模式是相当常见的,这适用于返回值和异常处理。在某些情况下,如果两个分支都是终止分支,但没有一个是有效的快捷方式,是否应该省略else部分就是一个值得讨论的问题。这主要取决于个人选择和代码的可读性。如果两个分支的缩进相等,它们会给人一种相等的重要性的感觉,而且或许会鼓励以后通过反转条件来进行重构。然而,如果我们直接跳到"return original price",将其放入if块中并将折扣情况移出if块的重构可能不太容易在一开始就正确地看出来。
在每个if条件中写else部分是必要的吗?
这个问题的出现的原因是,有人认为在每个if条件中写else部分会使代码更可读和易于维护,但有人则认为这是一个可怕的主意,会导致代码冗余和可读性降低。
解决方法之一是在else语句中使用空语句来表示已考虑了else情况。这种做法可能有些过度,但至少要考虑else情况。如果一个if条件没有else部分,除非原因很明显,可以使用注释来解释为什么不需要else部分。
有人认为这本书中的观点需要放在上下文中来理解。每个人编写的代码都是经过深思熟虑的结果。对于一个缺少else部分的if条件,一个合格的程序员会知道不需要采取任何操作。就像对待缺少的七行代码一样,你不会阅读一个函数并对未放置在末尾的七行代码感到困惑,这就是对缺少else部分的态度。
这本书的问题在于,有时会提出非常明显或初级的观点。例如,在前面的一页中,它说应该避免if-then-else语句,其中if块在其主体中没有语句,而是对测试条件进行取反。虽然我并不抱怨,但我宁愿选择一本明显的书,而不是包含晦涩难懂之处的书,因为作者在明显与非明显之间划定了界限(这可能根本不可能,因为每个人的知识和经验都不同)。
是否在每个if条件中写else部分是一个有争议的问题。一些人认为这样做有助于代码的可读性和可维护性,而另一些人则认为这是冗余的。解决方法之一是在else语句中使用空语句来表示已考虑了else情况,或者使用注释来解释为什么不需要else部分。然而,每个人对这个问题的看法可能不同,因此需要根据具体情况进行判断。