Switch
Mike James
foo at bar.com
Tue May 19 08:47:36 PDT 2009
Georg Wrede Wrote:
> bearophile wrote:
> >
> > void classify(char c) {
> > write("You passed ");
> > switch (c) {
> > case '#':
> > writeln("a hash sign.");
> > break;
> > case '0' ..> '9':
> > writeln("a digit.");
> > break;
> > case 'A' ..> 'Z', 'a' ..> 'z':
> > writeln("an ASCII character.");
> > break;
> > case '.', ',', ':', ';', '!', '?':
> > writeln("a punctuation mark.");
> > break;
> > default:
> > writeln("quite a character!");
> > break;
> > }
> > }
> (A bunch of other versions omitted.)...
>
>
> void classify(char c) {
> write("You passed ");
> switch (c) {
> case '#':
> writeln("a hash sign.");
> break;
> case '0' .. case '9':
> writeln("a digit.");
> break;
> case 'A' .. case 'Z':
> case 'a' .. case 'z':
> writeln("an ASCII character.");
> break;
> case '.', ',', ':', ';', '!', '?':
> writeln("a punctuation mark.");
> break;
> default:
> writeln("quite a character!");
> break;
> }
> }
>
> This is usable, easy to read -- and the programmer has no problem to
> remember that .. works differently in case statements than in ranges.
>
> There are other places in D that place an undue burden on the
> programmer, but this is not IMHO one of them.
>
> --------------------
>
> My pet peeve with case is that, since we don't seem to be getting rid of
> break (and use some word for fall-through instead, "which would save a
> good deal of ink"), we should at least try to make break more
> conspicuous. I can name a hundred times I've forgotten a break from
> somewhere. So the canonical indentation should be like this:
>
>
> void classify(char c) {
> write("You passed ");
> switch (c) {
> case '#':
> writeln("a hash sign.");
> break;
> case '0' .. case '9':
> writeln("a digit.");
> break;
> case 'A' .. case 'Z':
> case 'a' .. case 'z':
> writeln("an ASCII character.");
> break;
> case '.', ',', ':', ';', '!', '?':
> writeln("a punctuation mark.");
> break;
> default:
> writeln("quite a character!");
> break;
> }
> }
>
> (It'd look better when the cases have more lines, but still.) Currently
> in D, break is at least as important as case, therefore it deserves a
> conspicuous place, hence my suggestion.
Full Circle...
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=81519
More information about the Digitalmars-d
mailing list