From: mathew
Date: 2011-01-01T00:57:40+09:00
Subject: [ruby-core:34018] Re: Multi-line comments
On Mon, Dec 27, 2010 at 19:55, Rodrigo Rosenfeld Rosas
wrote:
> Please, could someone explain me why supporting multi-line comments
> is a bad thing?
As soon as you allow multi-line comments, you need to decide what to
do about nested multi-line comments, i.e. the 'start comment' sequence
inside a comment.
Option 1 is to allow it and make it not special. This is bad because
it makes it very easy to end up with a run-away comment:
/* set variables
param = 0
/* set maximum size */
maxs = 100
Here 'param' ends up unset. This kind of bug can be really hard to locate.
Option 2 is to allow the start-comment sequence within a comment, and
make comment pairs stack, so you need as many end-comment sequences as
start-comment sequences. This at least makes errors like the above
cause a compile-time failure, but it still makes them a pain to
locate; you end up having to use something like vim's '%' command to
play match-the-comment-delimiters until you spot which pair is
mismatched. That's no fun, especially once your comments contain pages
of documentation. Ask a Java programmer...
Option 3 is to disallow nested comments, in which case multi-line
comments can't be used to comment out blocks of code which contain
multi-line comments. That makes them pretty useless for temporary
disabling of code; it would also cripple their use in rdoc.
Single-line comments have none of the above problems. You always know
the comment will end when the next line starts. You can always comment
out a block of code, no matter how many comments or
comments-within-comments it contains. You never get runaway comments,
you never have to match up comment delimiters.
The only downside to single-line comments is that it's harder to
comment out and un-comment-out multiple lines. That's easily solved by
using any good text editor.
All of which is why C++ introduced single-line comments, and C99 added
them to regular C.
So in short, multi-line comments have no significant advantages, make
parsing harder, and make errors more likely. I think Matz was entirely
right not to put them in Ruby.
As a rule, the only place I use multi-line comments is for JavaDoc,
and that's only because I have to.
mathew
--