if语句-短路评估与可读性
有时,一条if语句可能相当复杂或冗长,因此,为了便于阅读,最好在之前提取复杂的调用if。 例如: if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall()) { // do stuff } 进入这个 bool b1 = SomeComplicatedFunctionCall(); bool b2 = OtherComplicatedFunctionCall(); if (b1 || b2) { //do stuff } (提供的示例并没有那么糟糕,它只是为了说明……想象一下具有多个参数的其他调用,等等。) 但是通过这种提取,我失去了短路评估(SCE)。 我真的每次都会失去SCE吗?在某些情况下,允许编译器“对其进行优化”并仍然提供SCE吗? 有没有办法在不丢失SCE的情况下提高第二个片段的可读性?