Hi,

It is all a question of good computer science.  A return can easily become a 
sneaky goto so, it does makes sense to avoid dotting them all over methods 
because it can (and often does) indicate that the code is poorly structured.

That said, use common sense.  Making code less readable or unnecessarily 
complex makes it more difficult to maintain and that, is also bad from a 
computer science POV.

>From Stephen's example

public int getNumberOfWidgets(Foo input) {
    if (input == null)
      return -1;

    int ret;
    // 30 lines of computation
    return ret;
}

It is also possible to do somethinglike

public int getNumberOfWidgets(Foo input) {
    if (input == null)
      return -1;
  else
     return doMainProcessing(...)
}

Int doMainProcessing() {
    int ret;
    // 30 lines of computation
    return ret;
}

This can avoid the need for everything being nested in an (ugly) if not null 
condition.

It is also probably a good idea to consider whether it is reasonable that input 
is null.  Avoiding exceptions is a good thing, returning junk that does more 
damage than an exception is a bad thing (tm).

--
Grts!
Ian

-----Original Message-----
From: Gabor Apati-Nagy [mailto:gabor.apati-n...@citrix.com] 
Sent: maandag 14 april 2014 12:59
To: dev@cloudstack.apache.org
Subject: RE: Coding Standards Questions

To my mind having multiple return statements might be unclear sometimes, but 
personally I do prefer this option. In this case we can easily make sure that 
the return value is not going to be changed. If we know the result, let's 
return it asap. If we reach a return statement anywhere, we can be sure that 
the right value is returned there is no need to double check further code in 
the method (except when exception can be raised by the return itself).

If we had only one return at the end of the method, it almost always adds more 
complexity (needs if/else blocks, maybe nested ones..., breaks for loops) The 
compiler checks for code paths that do not return before reaching the end of 
the method, this check is almost useless if we have one return at the end of 
the method.

Regards,
Gabor


-----Original Message-----
From: Stephen Turner [mailto:stephen.tur...@citrix.com] 
Sent: 14 April 2014 10:35
To: dev@cloudstack.apache.org
Subject: RE: Coding Standards Questions

I agree that pulling the return value out into a variable and returning it at 
the end can be clearer, but I wouldn't want to make an absolute rule about it. 
Sometimes returning early can reduce the number of nested if/else statements 
and increase clarity. For example, I would rather see:

public int getNumberOfWidgets(Foo input) {
    if (input == null)
      return -1;

    int ret;
    // 30 lines of computation
    return ret;
}

than put the bulk of the function in an else block. But maybe others disagree?

-- 
Stephen Turner


-----Original Message-----
From: Alex Hitchins [mailto:a...@alexhitchins.com] 
Sent: 11 April 2014 21:45
To: dev@cloudstack.apache.org
Subject: RE: Coding Standards Questions

Daan,

Are you referring to keeping line lengths up to 80 characters? Sorry - tired 
eyes.

My thoughts were more that in a function there should only be one "return"
statement rather than many, all nested in layers of if/else statements.


Alex Hitchins | 07788 423 969 | 01892 523 587
---------------------------------------------

-----Original Message-----
From: Daan Hoogland [mailto:daan.hoogl...@gmail.com]
Sent: 11 April 2014 18:30
To: dev
Subject: Re: Coding Standards Questions

H Alex,

I agree with you that would be nicer if your function fits in a screen.
Another coding convention we should adhere to. As it is I think it not so much 
'not a major concern' as too much to ask for.
Feel free to refactor and submit patches;)

Daan

On Fri, Apr 11, 2014 at 9:54 AM, Alex Hitchins <a...@alexhitchins.com>
wrote:
> All,
>
>
>
> As I've been looking through the code, I've seen a fair number of 
> places where return statements are called within if statements and the 
> like. I've always found that having one place to return is easier to 
> debug and follow the code flow.
>
>
>
> Are there any guidelines on this? Or is it not a major concern?
>
>
>
> Thanks,
>
>
>
> Alex
>
>
>
>
>
>
>
> Alex Hitchins
>
> ------------------------------
>
> E: a...@alexhitchins.com
>
> W: alexhitchins.com
>
> M: 07788 423 969
>
> T: 01892 523 587
>
>
>



--
Daan

Reply via email to