|
> From: Buck > > > Joe, doesn't one lose the value of reusable code > > if you can not depend upon it? > > Great question! I have strong feelings on this matter so indulge me for a > moment. I avoided this conversation because it's highly opinion-oriented, but I have to at least say my piece here. Reusable code is as close to "the grail" as we can get. The problems that occur are not because the code is reusable, but because they're (re)used incorrectly. This is the concept of the "side effect", which is what OO is all about (removing side effects, accessing logic only through interfaces). In Brad's case, there was a horrible side effect of calling the program: namely the file was left open in the default activation group (as close as I can figure from his posts). This side effect was not documented, and in fact probably wasn't even considered by the folks who wrote it, because they didn't think about it. If you write a file I/O routine, you better be damned sure that everyone who uses it understands the ramifications. Does it open files? Share them? Position them? Expect the position to stay the same? Typically, if you write a file I/O routine, you should probably ensure that you have your own ODP. This would alleviate any side effects such as the one Brad is seeing. You can do this relatively easily by having an initialization routine that overrides the file with a SECURE(*YES) and SHARE(*NO) and then opens the file. If your program, however, counts on the RPG cycle to open the files, then you need to make sure anyone calling this knows it. This problem was NOT a failure of the architecture of reusable code, it was simply a failure of IMPLEMENTING a reusable object, and specifically of side effects which were not documented and thus not known. This, by the way, is another reason that I advocate moving ALL file I/O for a file into a single module; it avoids some of these issues. It sometimes causes a little extra upfront work, but in the end it makes your life a lot cleaner. Anywho, don't want to step on toes here, I just want to chime in with my opinion that the issue was NOT the reusable code at fault - it was the undocumented side effects which burned Brad's butt. Joe
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.