[comp.lang.c] Rules to code by

jlh@loral.UUCP (Physically Phffft) (12/23/88)

With the fascinating discussion of coding style going on right now, I thought
I'd throw my two cents in.  First, some rules.

1.  Avoid unnecessary white space.  Blank lines waste precious screen real
    estate and paper, while spaces in a line waste disk space.  For this
    reason lines should be indented 1 space and 1 space only.
2.  Never never never use <> for include files.  Any idiot knows that angle
    brackets are the same as double quotes (""), why confuse things?
3.  If you absolutly positively have to use #define for something for
    god knows what reason, at least keep the names short.  Contrary to
    popular belief there's nothing wrong with the letters a, b, c, etc.
    While we're on the subject, parenthesis in macros are to be avoided.
    You don't begin to use the power of cpp until you can fully exploit
    side effects caused by invoking a single macro in different ways.
4.  Don't worry about maintaining your code.  It's common knowledge that
    the way to get ahead in this business is to change jobs every 6 months.
    So go for quantity over style.  This and rule #1 are the reasons why you
    shouldn't comment your code.
5.  Remember, yours is the One True Brace Style (OTBS).  Anybody who doesn't
    use your style is obviously incompetant and you owe it to management to
    point out the incompetance of these novice programmers.  It's a waste of
    time, both yours and theirs, to even discuss the matter with them.
6.  Below I've taken the liberty of re-formatting parts of getopt.c, just
    enough so you can get the flavour of my personal style.  A lot of
    people hate it at first, but then grow to like it.  Note the way
    a function's arguments are on the same line as the function name.
    Also note the way all if statement blocks are kept on a single line
    if at all possible.  For clarity all 'else' statements begin in column
    1 so they stand out.  Before formatting, the code below ran at about
    60-100 lines, clearly you can see the advantage in seeing all of it on
    the screen at a time.  .


=========================

#include "stdio.h"

index(s,c)char *s;int c;{
 while (*s) if (c == *s) return (s); else s++;
 return (NULL);}

int opterr=optind=1,optopt;char *optarg;

getopt(nargc,nargv,ostr) int nargc;char	**nargv,*ostr; {
static char *place = EMSG; char *oli,*index();
 if(!*place){
  if(optind>=nargc||*(place=nargv[optind])!='-'||!*++place)return(EOF);
  if(*place == '-'){ ++optind; return(EOF);}}
  if((optopt = (int)*place++) == ARGCH || !(oli = index(ostr,optopt))){
   if(!*place) ++optind; tell(": illegal option -- ");}
   if(*++oli != ARGCH){ optarg = NULL; if (!*place) ++optind;}
else{
   if (*place) optarg = place;
else if(nargc<=++optind){place=EMSG;tell(": option requires an argument -- ");}
else optarg = nargv[optind];
   place = EMSG;
   ++optind;}
 return(optopt);
}

========================


							Jim

PS.  My apologies to Henry Spencer, and all the others who worked on getopt.
PPS. Do I really need a :-) here?  I didn't think so.


-- 
Jim Harkins		jlh@loral.cts.com
Loral Instrumentation, San Diego

jcbst3@cisunx.UUCP (James C. Benz) (12/24/88)

In article <1891@loral.UUCP> jlh@loral.UUCP (Physically Phffft) writes:
>
>With the fascinating discussion of coding style going on right now, I thought
>I'd throw my two cents in.  First, some rules.
>
>index(s,c)char *s;int c;{
>
>PS.  My apologies to Henry Spencer, and all the others who worked on getopt.
>PPS. Do I really need a :-) here?  I didn't think so.
>
When I first saw this I thought I'd have a s**t Phffft until I saw the PPS.
Spare me the lurid nightmares and say it really is a joke - all of it.

andrew@alice.UUCP (Andrew Hume) (12/27/88)

the rules jim proposes are as valuable as they seem.
nevertheless, one rule merits attention.
using <> in include statements is more flexible than "" in
that you can control exactly what files get included by specifying
-Idir directives. regrettably, with "" it oftens scans . first.