comp.lang.ada
 help / color / mirror / Atom feed
From: willer@carolian.com (Steve Willer)
Subject: Re: Hungarian notation
Date: 1996/05/25
Date: 1996-05-25T00:00:00+00:00	[thread overview]
Message-ID: <31a66d08.1045898@sqarc.sq.com> (raw)
In-Reply-To: 4o4jeg$7e6@tpd.dsccc.com


kcline@sun132.spd.dsccc.com (Kevin Cline) wrote:

>This is a subject that seems to be largely ignored in undergraduate
>curricula.  The developers that do know how to comment seem to have
>learned by example.

This is a very interesting point, and one that my own experience as a
former student supports. Although my teachers did require that the code
be commented, they never made a reasonable attempt at teaching us what
kind of comments should be created, why they're important, caveats, etc.

I've had a continuing discussion via e-mail on this topic, and I thought
I wrote a reasonably good letter today that perhaps gets into more
specifics. I'll reproduce it here:

---------------------------------------------------------------------
>Note that everyone agrees that silly comments that just repeat what the
>code is doing are useless, but on the other hand, I find the idea of
>self-documenting code to be largely bogus. The most code can tell you
>is what it does and how it does it (true -- much poorly written code
>can't even tell you that).

Well, let's say for the sake of argument that it _is_ possible to have
fairly good self-documenting code. Would you agree that self-documenting
code would be more valuable, from a maintenance perspective, than any
comments within the functions?

You see, I believe strongly that it _is_ possible to make code clear
without resorting to side commentary. So I strive to achieve this
whenever possible, and I find that a good notation system helps
tremendously.

Let me give a quick analogy. If you're watching a movie and you just
don't understand what's going on, if you had a choice between someone
whispering explanations in your ear and having the movie make sense in
the first place, you would probably choose the latter, right? I find
that comments sprinkled throughout the code break the "flow" and
therefore damage the ability of the maintainer to understand the way the
code works without having to mentally step through every line of code.

>BUT! it can't tell you the why, and even less the why not (why you did not
>do something else). Furthermore, properly written comments are at a level
>of abstraction that is definitely above the level of the code, and this
>can make it far easier to follow the intent and shape of code without
>having to read the code itself (which is at a more detailed level, and 
>therefore takes more effort to read).

Part of the problem is that there are so many different types of
comments, it's difficult to have a good discussion about them without
recognizing the different types.

In particular, there are:

1. design documentation (I consider this to be related to comments)
2. "headers" at the top of functions, indicating what the function does,
   what the parameters mean, etc.
3. "procedural" comments, which are of the "literate programming"
   variety, like the example I gave earlier

[Note: this point refers to comments that are created to show program
structure before the code is written, which is suggested in at least one
book that I've read. An example might be:
   // for every node
      // tell the node to output its iteration
   // tell the user that we're done
]

4. "low-level overview" comments, which indicate what is going to
   be done in a 5-15 line segment. They can also serve to separate
   a function into multiple higher-level segments.
5. "hack" comments, which document a weird hack or bizarre form of
   algorithm that you are employing

Now, your comment about the useless comments seems to be about the "bad"
form of #3. My own personal experience is that I don't get much use out
of #3 at all, despite the fact that a number of books seem to recommend
this practice. My comment at the top of this letter is in fact about #3
specifically.

I personally feel that #1 and #2 are absolutely required for any
software that will be maintained by a different person or a few months
down the road (i.e. all software). I also feel that #5 is very
important, partly so maintainers can understand why the hack was put in,
but also perhaps more importantly to be sure that they don't undo the
hack (probably every developer has at least once looked in disgust at a
hack and "cleaned it up," only to discover later that there was a good
reason for it being there).

Now, #4, I tend to feel is optional. I try to limit my use of #4 to
places where the functions are long or complicated, but since I'm a C++
programmer, one of the design principles I try to live by is "write
simple functions". Consequently, #4 isn't needed very much in my code.
This is an example where I feel it's much more important to concentrate
on design principles than commenting principles.

I guess my biggest objection to the "comments are God" type of attitude
I see sometimes is that there are more important things to be done, like
fixing a bad design. I don't want to see comments being used to cover up
a bad design or bad code.




  reply	other threads:[~1996-05-25  0:00 UTC|newest]

Thread overview: 227+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4adem2$b5s@mercury.IntNet.net>
     [not found] ` <4ahka7$o9m@inrou.erno.de>
1996-05-13  0:00   ` Hungarian notation Roger Merritt
1996-05-14  0:00     ` Keith Whittingham
1996-05-14  0:00       ` Dr S.J. Harris
1996-05-15  0:00         ` Gerolf Wendland
1996-05-16  0:00           ` mAg
1996-05-17  0:00             ` Arne W Flones
1996-05-21  0:00               ` Norman L. Reitzel   
1996-05-21  0:00                 ` Richard A. O'Keefe
1996-05-22  0:00                   ` Peter Moylan
1996-05-23  0:00                     ` Robert Dewar
1996-05-23  0:00                       ` Steve Willer
1996-05-28  0:00                         ` Richard A. O'Keefe
1996-05-29  0:00                           ` Kevin Cline
1996-05-24  0:00                       ` Jeff Dege
1996-05-24  0:00                       ` Kevin Cline
1996-05-25  0:00                         ` Steve Willer [this message]
1996-05-25  0:00                           ` Hungarian notation: the thread of choice for consummate boors The Right Reverend Colin James III
1996-05-27  0:00                             ` Ken Nicolson
     [not found]                             ` <HFsHoD96w165w@bwalk.dm.com>
1996-05-28  0:00                               ` Jon Hornstein
1996-06-05  0:00                         ` Hungarian notation Ralph Silverman
1996-06-06  0:00                           ` James McKim
1996-06-07  0:00                             ` Ralph Silverman
1996-06-06  0:00                           ` Richard A. O'Keefe
1996-05-26  0:00                       ` Warren Young
1996-05-23  0:00                     ` Andy Ho-Fan Chan
1996-05-23  0:00                       ` Robert Dewar
1996-05-24  0:00                         ` Robert A Duff
1996-05-28  0:00                           ` Richard A. O'Keefe
1996-05-28  0:00                             ` Janus
1996-05-28  0:00                             ` Jeff Dege
1996-05-29  0:00                             ` Chris Kuan
1996-05-29  0:00                               ` Bob Rodgers
1996-05-30  0:00                                 ` Chris Kuan
1996-05-29  0:00                             ` Michael Furman
1996-05-31  0:00                               ` Richard A. O'Keefe
1996-05-31  0:00                                 ` Commenting (was Re: Hungarian notation) Alan Bowler
1996-05-31  0:00                                   ` Robert Dewar
1996-06-03  0:00                                     ` Ken Garlington
1996-06-01  0:00                                 ` Hungarian notation Steve Willer
1996-06-03  0:00                                   ` Warren Young
1996-06-01  0:00                                 ` Warren Young
1996-05-31  0:00                             ` Will Rose
1996-06-05  0:00                               ` Ralph Silverman
1996-06-07  0:00                                 ` Michael Furman
1996-06-01  0:00                             ` Heinz Hemken
1996-06-02  0:00                               ` Matt Kennel
1996-06-02  0:00                               ` Jeff Dege
1996-06-05  0:00                               ` Ralph Silverman
1996-06-06  0:00                                 ` Jeff Dege
1996-05-24  0:00                         ` Bob Rodgers
1996-05-27  0:00                       ` Peter Moylan
1996-05-27  0:00                         ` Jeff Dege
1996-05-27  0:00                           ` The Amorphous Mass
1996-05-28  0:00                             ` Jeff Dege
1996-05-28  0:00                               ` The Amorphous Mass
1996-05-29  0:00                               ` Comments was: " Bob Lang 3P21 x3172
1996-05-30  0:00                                 ` Kevin Cline
     [not found]                           ` <4odgjh$6o@carrera.intergate.bc.ca>
1996-05-28  0:00                             ` try to run this! - try_me.exe [3/4] Otmar Conradus
1996-05-28  0:00                       ` Hungarian notation Richard A. O'Keefe
1996-05-31  0:00                         ` The Last Word on Comments (was Re: Hungarian notation) Clark L. Coleman
1996-06-03  0:00                           ` Robert A Duff
1996-06-13  0:00                             ` Kevin D. Quitt
1996-06-13  0:00                               ` Richard Riehle
1996-06-15  0:00                                 ` Train
1996-06-18  0:00                                 ` Sandy McPherson
1996-06-18  0:00                                   ` David Zink
1996-06-19  0:00                                     ` Michael Furman
1996-06-20  0:00                                       ` Robert Dewar
1996-06-23  0:00                                         ` David Zink
1996-06-23  0:00                                           ` Robert Dewar
1996-06-28  0:00                                         ` Ralph Silverman
1996-06-28  0:00                                           ` Robert Dewar
1996-07-11  0:00                                             ` Ralph Silverman
1996-07-11  0:00                                               ` Robert Dewar
1996-07-12  0:00                                               ` steidl
1996-07-12  0:00                                                 ` Robert Dewar
1996-07-12  0:00                                                 ` Peter Seebach
1996-06-29  0:00                                           ` Lawrence Kirby
1996-06-29  0:00                                           ` steidl
1996-06-20  0:00                                   ` The Last Word on Comments (was Re: Hun Ian Ward
1996-06-05  0:00                           ` The Last Word on Comments (was Re: Hungarian notation) Peter Moylan
1996-06-05  0:00                             ` Mike Fulton
1996-06-05  0:00                               ` Steve Howard
1996-06-06  0:00                                 ` Jeff Dege
1996-06-05  0:00                               ` Shane Badham
1996-06-13  0:00                                 ` Steve Sobol
1996-06-14  0:00                                   ` Re-designing CS (long) (Was: Re: The Last Word on Comments) Warren Young
1996-06-21  0:00                                   ` Re-designing CS (long) Warren Young
1996-06-24  0:00                                     ` Brian J. Quandt
1996-06-06  0:00                               ` The Last Word on Comments (was Re: Hungarian notation) Bob Lang 3P21 x3172
1996-06-08  0:00                             ` Bill Hay
1996-06-11  0:00                               ` Derek Lee Beatty
1996-06-11  0:00                           ` Darius Blasbans
1996-06-11  0:00                             ` Kevin J. Weise
1996-06-13  0:00                               ` Kevin Cline
1996-06-13  0:00                               ` Kevin D. Quitt
1996-06-12  0:00                             ` Robert Dewar
1996-06-17  0:00                               ` James McKim
1996-06-18  0:00                                 ` Robert Dewar
1996-06-11  0:00                           ` Darius Blasbans
1996-06-11  0:00                           ` Darius Blasbans
1996-06-11  0:00                           ` Darius Blasbans
1996-06-11  0:00                           ` Darius Blasbans
1996-06-06  0:00                       ` Hungarian notation Sam Hunting
1996-06-06  0:00                       ` Ralph Silverman
1996-06-06  0:00                         ` David Hopkins
1996-06-07  0:00                         ` Richard A. O'Keefe
1996-06-07  0:00                           ` Steve Willer
1996-06-10  0:00                             ` Michael Furman
1996-06-12  0:00                               ` Warren Young
1996-06-07  0:00                         ` Hungarian notation (an aside) Bob Lang 3P21 x3172
1996-06-11  0:00                       ` I wish it was "The Last Word on Comments (was Re: Hungarian notation)" Blair MacIntyre
1996-06-03  0:00                     ` Hungarian notation Norman H. Cohen
1996-05-21  0:00                 ` Bob Rodgers
1996-05-22  0:00                   ` Matt Kennel
1996-05-23  0:00                     ` Steve Willer
1996-05-23  0:00                       ` Richard A. O'Keefe
1996-05-23  0:00                         ` Steve Willer
1996-05-23  0:00                     ` Bob Rodgers
1996-05-23  0:00                       ` Peter Seebach
1996-05-22  0:00                   ` Michael Furman
1996-05-22  0:00                   ` Slander (was: Hungarian notation) Graham Perkins
1996-05-23  0:00                     ` Richard A. O'Keefe
1996-05-24  0:00                       ` Tucker Taft
1996-05-23  0:00                   ` Hungarian notation Peter Moylan
1996-06-10  0:00                 ` Ralph Silverman
1996-05-18  0:00             ` Richard Riehle
1996-05-23  0:00             ` Robert I. Eachus
1996-05-23  0:00             ` James Kanze US/ESC 60/3/141 #40763
1996-05-23  0:00               ` Paul J. Kossick
1996-05-25  0:00                 ` Raoul De Kezel
1996-05-23  0:00             ` Laurent Guerby
1996-05-23  0:00               ` Please keep Hungarian notation thread OUT of comp.lang.modula3 Tim Mann
1996-06-05  0:00             ` Hungarian notation Ralph Silverman
1996-06-05  0:00               ` jthorpe
1996-06-06  0:00               ` Richard A. O'Keefe
1996-06-07  0:00                 ` Ralph Silverman
1996-06-07  0:00                   ` The Amorphous Mass
1996-06-10  0:00                   ` Michael Furman
1996-06-11  0:00                   ` Richard A. O'Keefe
1996-06-11  0:00                     ` Kevin Cline
1996-06-11  0:00                       ` Ralph Silverman
1996-06-11  0:00                       ` Chris Engebretson
1996-06-12  0:00                       ` Bob Rodgers
1996-06-12  0:00                         ` Matt Kennel
1996-06-13  0:00                           ` Giuliano Carlini
1996-06-13  0:00                           ` Jeff Dege
1996-06-22  0:00                       ` Richard Green
1996-06-11  0:00                     ` Will Rose
1996-06-07  0:00                 ` Chris Kuan
1996-06-05  0:00           ` Ralph Silverman
1996-05-14  0:00       ` Peter Seebach
1996-05-14  0:00         ` Pete Becker
     [not found]           ` <4ndb2j$1p0q@uni.library.ucla.edu>
1996-05-16  0:00             ` Mark Chu-Carroll
1996-05-16  0:00               ` Jay Martin
1996-05-17  0:00                 ` Scott
1996-05-23  0:00                 ` G.O.Visser
1996-05-16  0:00             ` Steve Branam
1996-05-16  0:00             ` Scott
1996-05-16  0:00               ` Giuliano Carlini
1996-05-18  0:00                 ` Warren Young
1996-05-16  0:00         ` Matt Kennel
1996-05-14  0:00       ` Dave Mikesell
1996-05-16  0:00       ` Dave Toland
1996-05-21  0:00       ` mAg
1996-05-21  0:00         ` Bob Lang 3P21 x3172
1996-05-21  0:00         ` Peter Seebach
1996-05-23  0:00           ` Steve Willer
1996-05-23  0:00             ` Peter Seebach
1996-05-23  0:00             ` Richard A. O'Keefe
1996-05-23  0:00               ` Bob Rodgers
1996-05-23  0:00                 ` Bob Kitzberger
1996-05-23  0:00               ` Train
1996-05-23  0:00                 ` jeffos2
1996-05-23  0:00               ` Robert Dewar
1996-05-28  0:00                 ` Richard A. O'Keefe
1996-05-23  0:00             ` Robert Dewar
1996-05-24  0:00               ` slary61
1996-05-24  0:00                 ` Ian Ward
1996-05-24  0:00                 ` Jos A. Horsmeier
1996-05-26  0:00                   ` Richard Riehle
1996-05-27  0:00                     ` Warren Young
1996-06-03  0:00                     ` Eva
1996-05-28  0:00                   ` Paul D. DeRocco
1996-05-24  0:00                 ` Jeff Dege
1996-05-24  0:00                 ` Jerry Kuch
1996-05-24  0:00                 ` Dave Toland
1996-05-27  0:00                 ` Norman L. Reitzel   
1996-05-27  0:00                   ` Matt Kennel
1996-05-28  0:00                 ` Richard A. O'Keefe
1996-05-28  0:00                   ` Jay Martin
1996-05-29  0:00                     ` Richard A. O'Keefe
1996-06-01  0:00                     ` Michael Feldman
1996-05-29  0:00                 ` AJ Musgrove
1996-06-05  0:00                 ` Ralph Silverman
1996-06-06  0:00                 ` Ralph Silverman
1996-05-24  0:00               ` Steve Willer
1996-05-21  0:00         ` Mark A Biggar
1996-05-21  0:00           ` slary61
1996-05-24  0:00         ` Oleg Kagan
1996-06-05  0:00           ` Ralph Silverman
1996-05-14  0:00     ` The Right Reverend Colin James III
1996-05-15  0:00       ` Graham Perkins
1996-05-15  0:00         ` Peter Seebach
1996-05-16  0:00           ` Pete Becker
1996-05-14  0:00     ` David Priest
1996-05-23  0:00     ` James Kanze US/ESC 60/3/141 #40763
1996-05-28  0:00     ` Brian Rogoff
1996-05-28  0:00     ` Homonnai Misi
1996-05-20  0:00   ` James Kanze US/ESC 60/3/141 #40763
1996-05-20  0:00     ` Tom Wheeley
1996-05-23  0:00     ` Steve Willer
1996-05-22  0:00   ` James Kanze US/ESC 60/3/141 #40763
1996-05-23  0:00   ` James Kanze US/ESC 60/3/141 #40763
1996-05-23  0:00     ` Richard Kenner
1996-06-01  0:00   ` Jim Kingdon
1996-06-10  0:00 Bob Crispen
  -- strict thread matches above, loose matches on Subject: below --
1996-05-15  0:00 Bob Crispen
     [not found] <30C40F77.53B5@swsbbs.com>
     [not found] ` <4cd8fc$oud@news.manawatu.gen.nz>
1996-01-08  0:00   ` Joachim Durchholz
     [not found] ` <marnoldDJEvtJ.1Lx@netcom.com>
     [not found]   ` <4aleun$jlk@ns.RezoNet.NET>
     [not found]     ` <marnoldDJMDBG.CFz@netcom.com>
     [not found]       ` <4asnkr$7b0@solutions.solon.com>
     [not found]         ` <4ath75$e7i@barnacle.iol.ie>
     [not found]           ` <4b4kij$svt@news.microsoft.com>
     [not found]             ` <dewar.819489496@schonberg>
1996-01-08  0:00               ` Michael Feathers
     [not found]               ` <4bd <4cne0e$1020@seminole.gate.net>
1996-01-08  0:00                 ` Adam Beneschan
1996-01-08  0:00                 ` Bob Kitzberger
     [not found] ` <30EF0415.6FE1@tus.ssi1.com>
     [not found]   ` <1996Jan7.045815.8676@ohstpy>
     [not found]     ` <4cpb00$nqk@news.xmission.com>
1996-01-08  0:00       ` Michael Feathers
1996-01-08  0:00         ` vancleef
1996-01-09  0:00         `  Todd Knarr 
1996-01-09  0:00           ` Michael Feathers
     [not found]       ` <hawkfish-0801960904580001@blv-pm3-ip24.halcyon.com>
1996-01-09  0:00         `  Todd Knarr 
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox