我参与了一个涉及复杂布尔逻辑的项目.这种复杂性使代码非常有效,但遗憾的是难以阅读.
因此,我们将逻辑排列如下,这使得更容易在复合语句中查看组,并且还可以向逻辑的某些部分添加注释.
(这段代码不是来自项目的真实代码,真正的逻辑更复杂)
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)
你有没有见过这在其他任何地方完成?
关于如何布置非常复杂的布尔逻辑,是否有任何约定或样式指南建议?
我会重构代码以使用外部方法使其更容易阅读.
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)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |