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:[email protected]]
Sent: maandag 14 april 2014 12:59
To: [email protected]
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:[email protected]]
Sent: 14 April 2014 10:35
To: [email protected]
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:[email protected]]
Sent: 11 April 2014 21:45
To: [email protected]
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:[email protected]]
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 <[email protected]>
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: [email protected]
>
> W: alexhitchins.com
>
> M: 07788 423 969
>
> T: 01892 523 587
>
>
>
--
Daan