There’s a coding pattern that I like to use which I picked up from the InDesign SDK. When there’s some code which needs a lot of conditions to be executed, it’s hard to write the conditions in a way that’s easily human readable.
You can either do: if(conditiona && conditionb && conditionc &&conditiond( { //do something } or: if(conditiona){ if(conditionb){ if(conditionc){ if(conditiond){ // do something } } } } Both of these are kind of hard on the eyes and make fixes error-prone. The do-while-false solution is much more ledgible than both of these and it goes like this: do{ if(!conditiona){break}; if(!conditionb){break}; if(!conditionc){break}; if(!conditiond){break}; //do something }while(false); The reason it works is that do-while-false executes exactly once, and break leaves the “loop”. The pattern reverses the logic and instead of checking when you *should* execute the code, it checks when you should bail out. The reason I like this pattern is because it makes for much flatter code and each condition stands on its own. That makes it easy to read and fix conditions at a later point. How do folks feel about trying to use this pattern? What prompted this post is commit b29975c which attempts to make a mess of conditions for invalidateSkinState() a bit clearer. Thoughts? Harbs