Hi Mohammad, David,

I'm aware of some Java Conventions :)
But IMO, your link only shows how to write a if/else statement and as far I can 
understand, it was not really the point David referred to
By the way, I prefer the second form cause it's easier to read and makes the 
code more maintainable.

Hope it helps.

Jean-Louis

-----Message d'origine-----
De : Mohammad Nour El-Din [mailto:[email protected]]
Envoyé : mercredi 30 septembre 2009 09:46
À : [email protected]
Objet : Re: Style: "Flattening" code blocks

Hi David...

   Actually the blocking style os mentioned in the Java Copding
Standards [1]. IMHO I see it very readable than the non-braces form.


[1] - http://java.sun.com/docs/codeconv/html/CodeConventions.doc6.html#449

On Wed, Sep 30, 2009 at 8:00 AM, David Blevins <[email protected]> wrote:
> There are places in the code that have excessive nesting.  For some reason
> books show this and everyone does it and I certainly did at first too, but
> having to deal with trees of logic 3-4 levels deep can really be a pain.
>  Many times the logic can be made completely linear with no else cases.  A
> big sign of that is when you repeat your else case many times.
>
> I started to work an example in email, but refactoring is hard to describe
> once you get beyond one or two steps and decided to just show you what I
> mean:
>
>  http://people.apache.org/~dblevins/ExcessNesting.mov
>
> That video basically shows how this:
>
>    public boolean hasBinding2(List<Class<? extends Annotation>>
> bindingTypes, List<Annotation> annots)
>    {
>        boolean result = false;
>
>        if (bindingTypes != null && annots != null && (bindingTypes.size() ==
> annots.size()))
>        {
>            int i = 0;
>            for (Class<? extends Annotation> bindingType : bindingTypes)
>            {
>                if (this.interceptorBindingSet.containsKey(bindingType))
>                {
>                    Annotation target =
> this.interceptorBindingSet.get(bindingType);
>                    if (AnnotationUtil.hasAnnotationMember(bindingType,
> annots.get(i), target))
>                    {
>                        result = true;
>                    }
>                    else
>                    {
>                        return false;
>                    }
>                }
>                else
>                {
>                    return false;
>                }
>
>                i++;
>            }
>        }
>
>        return result;
>    }
>
> Can be turned into this:
>
>    public boolean hasBinding(List<Class<? extends Annotation>> bindingTypes,
> List<Annotation> annots)
>    {
>        if (bindingTypes == null || annots == null) return false;
>        if (bindingTypes.size() != annots.size()) return false;
>        if (bindingTypes.size() == 0) return false;
>
>        int i = 0;
>        for (Class<? extends Annotation> bindingType : bindingTypes)
>        {
>            Annotation target = this.interceptorBindingSet.get(bindingType);
>
>            if (target == null) return false;
>
>            if (!AnnotationUtil.hasAnnotationMember(bindingType,
> annots.get(i), target)) return false;
>
>            i++;
>        }
>
>        return true;
>    }
>
>
> Not sure if people like this style of code, but figured I'd share and see
> what you all thought.
>
>
> -David
>
>



--
Thanks
- Mohammad Nour
- LinkedIn: http://www.linkedin.com/in/mnour
----
"Life is like riding a bicycle. To keep your balance you must keep moving"
- Albert Einstein



Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
exclusif de ses destinataires. Il peut également être protégé par le secret 
professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant 
être assurée sur Internet, la responsabilité du groupe Atos Origin ne pourra 
être recherchée quant au contenu de ce message. Bien que les meilleurs efforts 
soient faits pour maintenir cette transmission exempte de tout virus, 
l'expéditeur ne donne aucune garantie à cet égard et sa responsabilité ne 
saurait être recherchée pour tout dommage résultant d'un virus transmis.

This e-mail and the documents attached are confidential and intended solely for 
the addressee; it may also be privileged. If you receive this e-mail in error, 
please notify the sender immediately and destroy it. As its integrity cannot be 
secured on the Internet, the Atos Origin group liability cannot be triggered 
for the message content. Although the sender endeavours to maintain a computer 
virus-free network, the sender does not warrant that this transmission is 
virus-free and will not be liable for any damages resulting from any virus 
transmitted.

Reply via email to