Name
PRG-04: Avoid side-effects in your programs
Synopsis
Build lots of individual programs. 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 hardcopy 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 PROCEDURE book_details ( in_start_date DATE, in_end_date DATE) BEGIN DECLARE v_title, v_author VARCHAR(60); DECLARE v_last_book, v_book_id INT DEFAULT 0; DECLARE book_cur CURSOR FOR SELECT book_id,title,author FROM books WHERE date_published BETWEEN in_start_date AND in_end_date; OPEN book_cur; book_loop:LOOP FETCH book_cur INTO v_book_id, v_title, v_author; IF v_last_book THEN LEAVE book_loop; END IF; CALL details_show( v_title, v_author); CALL update_borrow_history ( v_book_id); END LOOP; END$$
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 ...
Get MySQL Stored Procedure Programming 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.