Name
MOD-05: Avoid side-effects in your programs.
Synopsis
Build lots of individual programs, preferably inside packages. Design each program so that it has a single, clearly defined purpose. That purpose should, of course, be expressed in the program’s name, as well as in the program header.
Avoid throwing extraneous functionality inside a program. Such statements are called “side-effects” and can cause lots of problems for people using your code—which means your code won’t get used, except perhaps as source for a cut-and-paste session (or—in hard-copy form—for kindling).
Example
Here’s a program that by name and “core” functionality displays information about all books published within a certain date range:
CREATE OR REPLACE PROCEDURE display_book_info ( start_in IN DATE, end_in IN DATE) IS CURSOR book_cur IS SELECT * FROM book WHERE date_published BETWEEN start_in AND end_in; BEGIN FOR book_rec IN book_cur LOOP pl (book_rec.title || ' by ' || book_rec.author); usage_analysis.update_borrow_history ( book_rec); END LOOP; END display_book_info;
Notice, however, that it also updates the borrowing history for that book. Now, it might well be that at this point in time the display_book_info procedure is called only when the borrowing history also needs to be updated, justifying to some extent the way this program is written.
However, regardless of current requirements, the name of the program is clearly misleading; there is no way to know that display_book_info also updates borrowing history. ...
Get Oracle PL/SQL Best Practices now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.