|
----- Original Message ----- From: "York, Albert" <albert.york@nissan-usa.com> To: <RPG400-L@midrange.com> Sent: Thursday, May 10, 2001 12:19 Subject: RE: Overloading in RPG. Hi Albert, > I still don't see any benefit to overloading. It seems like an opportunity > for confusion. Function overloading, like other forms of polymorphism, can be confusing if not used judiciously. So can indicators, overrides, the cycle, etc...... > I don't see how you have simplified maintenance any. You still have 4 > subprograms to maintain. Not really. What I've shown is the interface, so you didn't have the benefit of seeing the implementation. In practice, each "sub-program" would simply convert and/or rearrange the input parameters before calling another function (say.. DaysDurISO) that did the work. There probably wouldn't be more than a few lines of code in each implementation of DaysDur. > In addition, I don't see how there would be any guarantee that these > routines would do the same thing, just because they have the same name. As I > understand it, they are entirely different. They all serve the same purpose. Namely, to return an integer representing the days duration between two dates. It might help if you didn't think of each implementation of DaysDur as a different function. It's a single function that provides a flexible interface for your input parameters. > > I would prefer to have one procedure and do any necessary conversion in the > program. > > For example: > > DDaysDur PR 5I 0 > D CharDate1 8A > D CharDate2 8A > > C Eval Cdate1 = Ndate1 > C Eval Days = DaysDur(Cdate1: Cdate2) > How many procedures might call DaysDur? How many lines of code does it take to convert the parameters to a proper format? Multiply the two numbers. The result is all the extra code that you wouldn't have to write if you had overloading. Without overloading, if you wanted to change DaysDur to accept the new *DATE data type, you wouldn't be able to without changing each calling procedure. However, the overloaded version of the function would handle it easily. All you'd do is specify an additional parameter list (interface), and you're done. None of the existing code will be affected. "Imagination continually frustrates tradition; that is its function." - John Pfeiffer John Taylor Canada +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
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.