http://qs1969.pair.com?node_id=363263


in reply to Re^2: C/C++ type assert() in Perl?
in thread C/C++ type assert() in Perl?

I learned that asserts are supposed to be used to
guarantee that the programmer did not make a mistake in
his coding, and pass in bad values to a subroutine.

In the case of the credit card, it would be pointless to assert() that the card is active.
It would be prudent, however, to assert() that the program passed in a valid card to
the subroutine that checks for active cards. Whether or not the card is active is not
a programming error. Not passing a valid card in certainly is.

Replies are listed 'Best First'.
Re^4: C/C++ type assert() in Perl?
by waswas-fng (Curate) on Jun 17, 2004 at 16:50 UTC
    My point being that asserts direct most programmers to copy and paste the same code that you should have used earlier on in your app to check if the card number was valid -- a regex or a sub -- whatever. This not only is redundant it also give the developer a false sense of a safety net (if his code did not verify the card correctly before it will/may not now). I think it is better to use a well established test harness to actually test a bad card number insert in multiple ways and verify the expected behavior happens.

    In my mind asserts are just as bad as mixing the display logic of web apps with the program logic -- in small apps just use print statements to debug or whatever you are comfortable with. In large complex apps do debugging and testing in specialized areas -- there is a reason it is called the debugger you know.


    -Waswas