|
return is the one opcode I am wishy-washy about. I might code: If ( Value < 0 ); Return 0; Else; Return Value; Or I might code If ( Value < 0 ); ReturnVal = 0; Else ReturnVal = Value; Return ReturnVal; The longer the function, the more apt I am to do it the second way. For a 4 to 10 line function, I'll sometimes do it the first way. In this case, it all depends on which makes the code easier to understand my intentions and easier to maintain. Structured Programming Techniques do require each function/Subroutine to only have one exit point though, and the first sample does break that rule. Regards, Jim Langston -----Original Message----- From: rob@dekko.com [mailto:rob@dekko.com] Sent: Thursday, December 06, 2001 1:02 PM To: rpg400-l@midrange.com Subject: RE: Why is LEAVE bad? (was: Cycle Processing vs. Doing it my way) Buck, You're right about breaking down the monolith to avoid the return code being changed inadvertently. But, I've broken down the monolith to use many subroutines (No, I am not subprocedure shy - trust me, I use them.). In these particular subroutines I may use LeaveSr. Much like a subprocedure many have multiple Return values If divisor=0 Return 'Invalid Number!' Else Return 'Your value is ' + %editc(MyNumber/Divisor:'J') EndIf Not only is a Return for returning values - but it may be used as an 'improper' control structure (In some people's opinion.). Rob Berendt ================== "They that can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety." Benjamin Franklin Buck Calabro <Buck.Calabro@com To: rpg400-l@midrange.com msoft.net> cc: Sent by: Fax to: rpg400-l-admin@mi Subject: RE: Why is LEAVE bad? (was: Cycle Processing vs. Doing it my drange.com way) 12/06/2001 03:17 PM Please respond to rpg400-l >And the only problem with setting a return code >and exiting at the bottom is that you have to >scan every line of code to be sure you don't >accidentally change the return code before >returning. Oh, I don't know... (a lot!) If I mis-set a return code a simple editor search will turn the culprit up. Doing a search on LEAVE will turn a lot more suspects. This is really just a theoretical discussion. In practise, if a block of code is big enough to require multiple return codes or multiple exit points, it's probably not structured very well anyway. There are well-known reasons for allowing this sort of code; edit checking a screen-load of input data is one. You've ably demonstrated that there are indeed places where the thoughtful programmer might use leave. I've been finding that my old style of coding would result in commingling of code blocks; sequences that work better as their own function. When I write using many small functions, I find that I have fewer and fewer reasons for leave, because my code blocks do one thing and one thing only. Leave now seems to me like a semicolon in a run-on sentence. Thanks for the discussion! --buck
As an Amazon Associate we earn from qualifying purchases.
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.