From: Roel Schroeven on
Duncan Booth schreef:
> Would you care to name a few languages which support nested block
> comments? There really aren't many: ML as you mentioned; Standard Pascal
> doesn't permit nesting of comments but *some* implementations do allow it.
>
> Want to comment out a block of code in C++? The only (nearly) reliable way
> is to insert single-line comments down the block. You can't use a block
> comment if there are any other block comments inside the code you want to
> block out.

Depends, some compilers support that. But the preferred way, which works
very well, is to use preprocessor directives:

#if 0
...
#endif

Works in both C and C++.

--
If I have been able to see further, it was only because I stood
on the shoulders of giants. -- Isaac Newton

Roel Schroeven
From: Edward Elliott on
Duncan Booth wrote:
> Want to comment out a block of code in C++? The only (nearly) reliable way
> is to insert single-line comments down the block. You can't use a block
> comment if there are any other block comments inside the code you want to
> block out.

As Roel said, #if 0 is the standard way. It abuses the preprocessor and
doesn't show up in syntax highlighting, but other than that works very
well. Honestly though, /* and */ should have nested properly since day 1.
Adding it wouldn't even break existing code.

> The danger of block comments is that if you forget to close the comment
> you can accidentally comment out a large part of your code.

No, unclosed comments should raise a syntax error. Would you accept an
unclosed string literal?

> Doc strings will usually work as an alternative, especially since you
> have a choice of two flavours of triple quoted strings, so if you use
> one for docstrings the other is always free for your temporary block
> comments.

That's a fair point, if a bit of a kludge. 90% there is good enough in
practice.

> This pig gets much more annoyed having to maintain code which has large
> chunks of unneeded commented out code left over from some other programmer,
> or which has completely messed up indentation.

Sure they can be abused. So can a thousand other language features. My
point is you can't teach good coding through syntax, and trying to causes
more problems than it solves.

I would argue the current system is in fact slightly worse, because people
will comment out code chunks anyway (either lots of #s or triple-quotes)
and are less likely to remove them when it's more work. But either way,
social pressure is infinitely more effective at cleaning up code than
comment syntax.
From: Gregor Horvath on
Edward Elliott schrieb:

> On top of that, the expressive power of nested comments seems greater
> than an endless string of ^#s. Sometimes it's just easier to see what's
> going on.

not if you are using grep

--
Gregor
http://www.gregor-horvath.com
From: Peter Tillotson on
Ben Finney wrote:
> "Atanas Banov" <enterr(a)gmail.com> writes:
>
>> Edward Elliott wrote:
>>> Saying coders shouldn't use multiline comments to disable code
>>> misses the point. Coders will comment out code regardless of the
>>> existence of multiline comemnts. There has to be a better
>>> argument for leaving them out.
>> i beg to differ: you'd be surprised how much effect can little
>> inconveniences have.
>>
>> want to comment block of code? use tripple-quotes. does not nest?
>> ahhh, maybe it's time to get rid of that block you commented out a
>> month ago "just in case the new code doesnt work".
>
> Indeed. Using revision control means never needing to comment out
> blocks of code.
>
> If your revision control system is so inconvenient to use that you'd
> rather have large blocks of commented-out code, it's time to start
> using a better RCS -- perhaps a distributed one, so you can commit to
> your own local repository with abandon while trying out changes.
>

I'm not sure I agree, revision control is great but not the only answer.
In multi-developer teams working on the trunk, it its kind of
inconvenient if someone checks in broken code. It also blocks critical
path development if the person responsible for the code you conflict
with happens to be out on holiday. Block commenting is a clear flag to
that developer that something has changed - ideally he'd notice, see
sensible revision control comments, see the flag on the wiki or you
would remember to tell him. But if all of that fails, if it is commented
in the code it should get picked up at a code review.

Personally, I prefer clear code, minimally commented with good high
level descriptions of particularly complex section / algorithms. The
later doesn't always fit neatly on one line. There is an argument that
these should go into their own functions and be commented at the
function level. Again I'm not sure I agree entirely - function comments
that are auto extracted to create api docs (sorry Java background :-))
need only outline What a function does. There is a place for multiline
comments to describe How that is achieved.

Having said all that, I generally don't like comments, they are often
maintained poorly, too numerous, too verbose (red rag :-)) - so i'm
undecided whether they should be made easier for developers or
discouraged except where vital. Perhaps we should make them really hard
and elegant - mandate latex/mathml markup so good editors can display
the equations we are implementing :-)
From: Jorge Godoy on
Edward Elliott wrote:

> Typing (* and *) on a few line will always be quicker, easier, and less
> confusing than any rcs diffs/restores. Once you delete the code you can
> no longer see it or add pieces back in without retrieving it from an
> external store.

Try using Subversion. You can work and make diffs disconnected from the
network. You can't, of course, commit / update but you can work with it
and have what you need to compare original code (i.e. the one from the last
commit) to new code and go back to original code if needed.

> I'm not saying nested comments solve every problem, just that
> there exists a certain (perhaps small) class of problems they solve
> particularly well.

I don't miss them. :-)

> Personally, I rarely leave code commented out beyond a single coding
> session. But my particular coding habits aren't relevant here.

Well, I believe they are since it looks like a habit of yours to use
multiline comments. It is common for people coming from other programming
languages that support them.

--
Jorge Godoy <godoy(a)ieee.org>

"Quidquid latine dictum sit, altum sonatur."
- Qualquer coisa dita em latim soa profundo.
- Anything said in Latin sounds smart.
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9
Prev: how do you pronounce 'tuple'?
Next: A Unicode problem -HELP