SJS wrote:
begin  quoting David Brown as of Sun, Mar 16, 2008 at 04:38:35PM -0700:
[snip]
Then I must not have been very clear.  The comment should never explain
what is obvious to a knowledgeable user of the language.  There is a
difference between explaining the obvious.

Anything that you'd have to puzzle out after six months or more away
from the code should probably include a comment.

And for comments, why is better than what.

                                            It's this kind of thing I'm
referring to:

  /* FUNCTION blort
   *
   * arg1 - An integer argument.
   * arg2 - A string argument.
   * returns an integer
   */
  int blort (int arg1, char *arg2);

The best indicator of what the argument is for would be it's name.  A
comment should not explain that it is an integer, but what is its meaning.
Is it a count of something, or an index, or something else.

   /* blort
    *
    * This function blortifies the specified string (in-place) and
    * answers the number of changes made, or answers a negative value
    * if the string is malformed (or some other error occurs).
    *
    * arg1 - A non-negative integer value indicating the degree of
    *        desired transformation. Note that prime values are
    *        isomorphic transformations.
    * arg2 - A non-null modifiable blortifiable string.
    * returns negative values on error, otherwise the number of changes made.
    */
   int blort( int arg1, char *arg2 );

And I would hurt you both right off the bat for arg1, arg2.

Those better be something like:

(int transformLevel, char* blortString)

Unfortunately, this is a *classic* C failure mode. Since nobody has an editor that does autocomplete in C, everybody writes cryptic variable names.

-a

--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg

Reply via email to