So, since we do software testing, we should quit placing
(TL;DR: skip to the paragraph containing a red sentence and read only that.)
assert
statements in production code, right? Let me count the ways in which this is wrong:(TL;DR: skip to the paragraph containing a red sentence and read only that.)
1. Assertions are optional.
Each programming language has its own mechanism for enabling or disabling assertions. In languages like C++ and C# there is a distinction between a release build and a debug build, and assertions are generally only enabled in the debug build. Java has a simpler mechanism: there is only one build, but assertions do not execute unless the
-enableassertions
(-ea
for short) option is specified in the command line which started the virtual machine. Therefore, if someone absolutely cannot stand the idea that assertions may be executing in a production environment, they can simply refrain from supplying the -ea
option; problem solved.