Channels ▼
RSS

Design

Bug Opportunity Levels


Level 1: If there is an error, it will be caught at compile time. This is the next best case. Although it is possible to make a mistake, that mistake is guaranteed to be caught before you ever run the program. If your source code editor provides on-the-fly error checking, you may even be alerted to the mistake within seconds of making it.

Many recent developments in programming languages have been oriented toward allowing more errors to be caught at compile time. A good example is the generics facility added to Java in version 5.

Suppose you are creating an ArrayList to hold Strings. You do not intend that anything but Strings should ever be put into it, and you explicitly cast each element to a String as you remove it from the list. Nonetheless, prior to Java 5 there was nothing to prevent you from putting a different kind of object into the list. The result would be a ClassCastException when you removed it and tried to cast it to a String.

In Java 5, you can declare the list to be an ArrayList<String>. This informs the compiler that nothing but Strings may ever be put into the list. If you try to put anything else in, your code will fail to compile.


Related Reading


More Insights






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video