Is there a programming language that is combination of Python and Basic?
digitig at gmail.com
Mon Apr 20 15:52:28 CEST 2009
2009/4/20 david <youngde811 at gmail.com>:
> When I was at Data General, writing C (and a little C++), we had a set
> of internal coding conventions that mandated a single return point for
> a function.
How long ago was that? Or, more relevant, how old was the rule? Or how
long earlier had the person who wrote the rule learned their craft?
One reason for mandating single exit points was that early flow graph
reducers couldn't handle them, but, because of the GOTO equivalents
that you give, graphs with multiple exit points /are/ reducible
without the exponential blowup that node splitting can cause, so
they've been able to handle multiple exits for many years.
Of course, your code is equivalent to:
int rval = 0;
if (bilbo() != 0) rval = -1
if (gandalf() != 0) rval = -1
/* lots of code here */
with not a GOTO in sight, and to my mind much clearer logic. If the
nesting meant that the indentation was marching off the side of the
page I'd refactor the "lots of code here" into an inline helper
function. And provided bilbo() and gandalf() don't have side effects,
I'd probably rewrite it as:
int rval = 0;
if ((bilbo() == 0) || (gandalf() == 0)
/* lot's of code here */
else rval = -1;
I'd be inclined to do it that way even if multiple exits were allowed;
it just seems so much clearer.
More information about the Python-list