title: Switch statement fall-through...should it be allowed?
body: <p>For as long as I can remember I have avoided using switch statement fall-through. Actually, I can't remember it ever entering my consciousness as a possible way to do things as it was drilled into my head early on that it was nothing more than a bug in the switch statement. However, today I ran across some code that uses it by design, which got me immediately wondering what everyone in the community thinks about switch statement fall-through.</p>
  <p>Is it something that a programming language should explicitly not allow (like C# does, though it supplies a workaround) or is it a feature of any language that is powerful enough to leave in the programmer's hands?</p>
  <p><strong>Edit:</strong>
  I wasn't specific enough to what I meant by fall-through. I use this type a lot:</p>
  <pre class="lang-js prettyprint-override"><code>    switch(m_loadAnimSubCt){
          case 0:
          case 1:
              // Do something
              break;
          case 2:
          case 3:
          case 4:
              // Do something
              break;
     }
  </code></pre>
  <p>However, I'm concerned about something like this.</p>
  <pre class="lang-js prettyprint-override"><code>   switch(m_loadAnimSubCt){
          case 0:
          case 1:
              // Do something, but fall through to the other cases
              // after doing it.
  
          case 2:
          case 3:
          case 4:
              // Do something else.
              break;
     }
  </code></pre>
  <p>This way whenever the case is 0, 1 it will do everything in the switch statement. I've seen this by design and I just don't know if I agree that switch statements should be used this way. I think the first code example is very useful and safe. The second seems kind of dangerous.</p>