home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16143 < prev    next >
Encoding:
Text File  |  1992-11-08  |  4.7 KB  |  99 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!mole-end!mat
  3. From: mat@mole-end.matawan.nj.us
  4. Subject: Re: Productivity of a C programmer ?
  5. Message-ID: <1992Nov7.021605.28088@mole-end.matawan.nj.us>
  6. Summary: Comments: not just the number but the purpose and the quality
  7. Organization: :
  8. References: <1992Oct29.085752.25264@pilhuhn.ka.sub.org> <Bx3KFK.7Er@cdsmn.mn.org> <560@ulogic.UUCP>
  9. Date: Sat, 7 Nov 1992 02:16:05 GMT
  10. Lines: 87
  11.  
  12. In article <560@ulogic.UUCP>, hartman@ulogic.UUCP (Richard M. Hartman) writes:
  13.  
  14. > Code/comment ratio shows how well documented the code is.  A low
  15. > ratio you may have been spending more time explaining what you were
  16. > doing than doing it.  A high ratio may mean that it would be hard
  17. > for someone else to jump in and do maintenance.
  18.  
  19. > Each of these values were based on my whim of what I thought might
  20. > be useful.  No flames on "that one is useless" please.  However, I
  21. > am certainly open to suggestions about other metrics to add to the
  22. > summary.        :)
  23.  
  24. Here's something to consider when counting comments.  I don't believe
  25. that it can be automated, but when counting comment density, there are
  26. three or four kinds of things to be explained by comments:
  27.  
  28.     1) The role that the code unit plays in the surrounding system
  29.        (``... is used for all file operations'' ``totals the
  30.        statistics requested by the -s flag'')
  31.  
  32.     2) Extraordinary interfaces or requirements imposed by the
  33.        surrounding system.  (``The X3 total in the main tables
  34.        can only be trusted _before_ we run the totalizers for the
  35.        other categories'')
  36.  
  37.         3) Recondite or extremely theoretical algorithms.  (``This
  38.        computes a discrete convolution using a linear-time
  39.        algorithm; for the former, see Hirsh's *Mathematics of XYZ*,
  40.        Chapter 6; for the latter, see JACM ... .  The basic idea
  41.        is that ...'')
  42.  
  43.     4) Code that can't explain itself.  (``I1 is used as ... and as ...
  44.        and as ... .  I2 is used as ... and ... and ... [followed by
  45.        an ASCII-graphics flowchart].)
  46.  
  47. Comments in category 1 are probably neutral in a naieve comment-to-code
  48. ratio; they are generally good but they can become outdated and can be
  49. written in ways that increase the likelyhood that they will become outdated.
  50.  
  51. Comments category 2 probably count against the rest of the system.
  52.  
  53. Comments in category 3 probably count in favor of the code.  Whether
  54. the algorithms are justified or not, of course, depends upon whether
  55. there are simpler ways that are otherwise as good--and whether the
  56. algorithms can be gotten out of a good library somewhere.
  57.  
  58. Comments in category 4 count against the code, plain and simple.
  59.  
  60. Comments that are written poorly should probably count against the code no
  61. matter where they are.  Composition of prose is one of the hardest things
  62. to do well; like virtue, it has no single standard of ``good enough.''
  63.  
  64. Sheer facility with language doesn't make one a good writer; for all Bruce
  65. Catton's masterful use of American English idioms (``--on the Island Vale
  66. of Avalon, at a guess--'',  ``Here was the man who looked as if he was
  67. ready to drive his head through a brick wall, and since nothing else had
  68. worked, perhaps that was the thing to try.''), it couldn't make his books
  69. great.  His diligent research, like his `technique' with English, would
  70. be useless if he couldn't organize his material.
  71.  
  72. Organizing the material is probably the hardest part of composition--and
  73. the key to both good prose and good code.  It's also the hardest thing to
  74. enforce organizationally.  Try suggesting, in a code review, that a comment
  75. isn't clear enough.  Do it more than once or twice in a score of pages and
  76. you'll be the project's pet crank.
  77.  
  78. This is a good exercise in criticism, by the way; if you _do_ succeed in
  79. convincing people that a comment doesn't quite say what it should, you
  80. may win points, but every criticism you make carries a cost.  Keeping the
  81. total positive is wonderful discipline.  It also teaches you to zero in
  82. on the essentials of an error or uncertainty: if you can ask ``is that the
  83. elapsed time _before_ adjustment?'' and see half the people in the room
  84. nodding as the importance of the question transpires, you've won a point,
  85. but the same question asked in three or four sentences may cost you five
  86. times the points you could have won.
  87.  
  88. Sheer quantity of prose, like sheer quantity of code, like sheer quantity
  89. of ideas, is a very poor measure.  The editorial page of any newspaper has
  90. plenty of ideas, but together they do not equal one of the penetrating
  91. insights of an Aristotle or a von Clausewitz.  The mental chaos of a fugue
  92. state has plenty of ideas but little value because they are neither properly
  93. connected nor effectively directed.  So with code and so with prose.
  94. -- 
  95.  (This man's opinions are his own.)
  96.  From mole-end                Mark Terribile
  97.  
  98.  mat@mole-end.matawan.nj.us, Somewhere in Matawan, NJ
  99.