是否有任何样式指南建议或约定格式化复杂的布尔逻辑?

com*_*eye 5 coding-style

我参与了一个涉及复杂布尔逻辑的项目.这种复杂性使代码非常有效,但遗憾的是难以阅读.

因此,我们将逻辑排列如下,这使得更容易在复合语句中查看组,并且还可以向逻辑的某些部分添加注释.

(这段代码不是来自项目的真实代码,真正的逻辑更复杂)

if  (
        //comments here!            
        angle.angle < kQuiteLow 

     && (
            previousAngle.angle > kQuiteHigh
         || previousAngle.time == kUnknownTime
        )

        //comments in here too!         
     && pairedAngle.angle < kQuiteLow 

     && (
            //and here
            previousPairedAngle.angle > kQuiteHigh
         || previousPairedAngle.time == kUnknownTime
        )
    )
Run Code Online (Sandbox Code Playgroud)

你有没有见过这在其他任何地方完成?

关于如何布置非常复杂的布尔逻辑,是否有任何约定或样式指南建议?

Pau*_*enk 7

我会重构代码以使用外部方法使其更容易阅读.

if( ValidAngle(angle, previousAngle) && ValidAngle(pairedAngle, previousPairedAngle) )

ValidAngle( angle, prevAngle){
    return angle.angle < kQuiteLow && (previousAngle.angle > kQuiteHigh || previousAngle.time == kUnknownTime)
}
Run Code Online (Sandbox Code Playgroud)