× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Dennis,

Some people would point out that using LEAVE violates a programming rule
(since it's really just a GOTO in disguise). I wouldn't necessarily agree
with them, though. Rules, schmules.

Here's my equivalent code:

http://code.midrange.com/125e58e898.html

As you can see, almost no difference - it still uses a single entry and exit
point, no more if/else logic. As far as "control flowing to the end of the
stream in the event of an exception", is that a good idea anyway? Surely it
should be made clear in the code that when an exception occurs, it should be
'handled' immediately - in my case, this means going straight to a dedicated
subroutine. In your case however, the user needs to scan down (possibly
several pages of) the source to find the ENDDO... Easier with consistent
indentation and WDSc, but not as easy as searching for 'RETURN'.

However, if one were to add another DO- or FOR-loop outside the main one (or
indeed, if any of your IF clauses was changedto a DO- or a FOR-loop), then
your code would need some changes, to ensure that the LEAVE exits both
loops, whereas my code would continue to work. I know, I know, it's easy to
think up situations where existing code would fail if someone made a
'flow-related' change without thoroughly seeing the ramifications, but I *
think* that my code is *slightly* more 'bulletproof' to future idiots in
that regard.

I guess I don't see where my approach is any more ugly than yours, but
that's the thing about code - one man's beauty is another man's ugliness :)
As long as we both have a consistent strategy for error-handling, then we're
both good.

Rory

On Tue, Mar 2, 2010 at 10:23 AM, Dennis Lovelady <iseries@xxxxxxxxxxxx>wrote:

I make a point of (generally, not always) having a subroutine called
return.
In my code, I will code an 'exsr return' instead of simply the RETURN
opcode, even though the 'return' subroutine may contain no more than
the
RETURN op-code.

Why?

Here's an alternative for you to consider:
http://code.midrange.com/85da238f9e.html Maybe it will shed some light
on
an alternative method that doesn't violate any programming rules, doesn't
add a bunch of new if/else logic, still allows control to flow to the end
of
the stream in the event of exception, et cetera, but with only one exit
point.

Please forgive the stray /free at the top. It's a concept, not a working
program.

I think (and I seem to be alone here) that the effort is very well worth
it!
And with this particular approach, the effort is minimal. To me (with the
afore-mentioned 'alone' caveat) those other approaches ARE ugly next to
this.

Dennis Lovelady
http://www.linkedin.com/in/dennislovelady


As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:
Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.