I believe example2 need to be reformatted to match example1
do
{
    if(prompt == null)
    {
         break
    };
    if(prompt == "")
    {
         break
    };
    if(!skin){
         break
    };
    if(!skin.currentState)
    {
         break
    };
    if(skin.currentState.indexOf("WithPrompt") == -1 && text.length != 0 ||
       skin.currentState.indexOf("WithPrompt") != -1 && text.length == 0)
    {
         break
    };

    invalidateSkinState()
    break;
} while(false);

and most probably second if need to divided into 2 ifs :)

On Thu, Nov 19, 2015 at 6:51 PM, Kessler CTR Mark J <
mark.kessler....@usmc.mil> wrote:

> Let me see if I can reformat into all the examples so we can have a real
> sample for people.  Below shows the original, what was committed.  Then
> shows the last few examples. Hopefully this won't get word wrapped to badly
> or have font issues.
>
> The original was changed to better group the sets of conditions and added
> brackets to be able to see the "do something" separated from the conditions
> better.  My input for it would be; what you choose will be based on the
> current code and will vary with each case.
>
>
> Original:
>
> if (prompt != null && prompt != "" && skin && skin.currentState &&
>     (skin.currentState.indexOf("WithPrompt") != -1 && text.length != 0 ||
>      skin.currentState.indexOf("WithPrompt") == -1 && text.length == 0))
>     invalidateSkinState();
>
>
> Commited:
>
> if (prompt != null && prompt != "" && skin && skin.currentState)
> {
>     if (skin.currentState.indexOf("WithPrompt") != -1 && text.length != 0
> ||
>         skin.currentState.indexOf("WithPrompt") == -1 && text.length == 0)
>     {
>         invalidateSkinState();
>     }
> }
>
>
>
> example 1:
>
> if (prompt != null)
> {
>     if (prompt != "")
>     {
>         if (skin)
>         {
>             if (skin.currentState)
>             {
>                 if (skin.currentState.indexOf("WithPrompt") != -1 &&
> text.length != 0 ||
>                     skin.currentState.indexOf("WithPrompt") == -1 &&
> text.length == 0)
>                 {
>                     invalidateSkinState();
>                 }
>             }
>         }
>     }
> }
>
>
> example 2:
> do
> {
>     if(prompt == null){break};
>     if(prompt == ""){break};
>     if(!skin){break};
>     if(!skin.currentState){break};
>     if(skin.currentState.indexOf("WithPrompt") == -1 && text.length != 0 ||
>        skin.currentState.indexOf("WithPrompt") != -1 && text.length ==
> 0){break};
>
>     invalidateSkinState()
>     break;
> } while(false);
>
>
>
> -Mark
>
> -----Original Message-----
> From: Harbs [mailto:harbs.li...@gmail.com]
> Sent: Thursday, November 19, 2015 3:16 AM
> To: dev@flex.apache.org
> Subject: do-while-false
>
> 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
>



-- 
WBR
Maxim aka solomax

Reply via email to