Subject: Re: a new KNF (and some comments)
To: Luke Mewburn <lukem@cs.rmit.edu.au>
From: Dan Winship <danw@MIT.EDU>
List: tech-misc
Date: 01/20/2000 23:13:59
>  * Style guide for the NetBSD KNF (Kernel Normal Form).

But it's not just for kernels any more! The comment should explain
that it's for all NetBSD code.

>  * Use the __P macro from the include file <sys/cdefs.h> for prototypes
>  * in header files, for compatibility with non-ANSI compilers.  I.e,
>  *	void function __P((int));
>  */
> static char	*function(int, int, float, int);
> static void	usage(void);

Adding "Don't use it for prototypes in C files." to the end of the
comment would make this section a lot easier to understand.

> 	 * Forever loops are done with for's, not while's.

Is there some good reason for that? (And there's a lot of code in the
tree that doesn't obey this.)

> 	/* Second level indents are four spaces. */

[This is my least favorite rule. But I digress.]

> 	 * Unary operators don't require spaces, binary operators do.  Don't
> 	 * use parenthesis unless they're required for precedence, or the
> 	 * statement is really confusing without them, such as:

I agree with whoever said we shouldn't discourage non-gratuitous
parenthesization.

> 	 * Function declarations (which are ANSI style) should go in the

Shouldn't that be "Function prototypes"? (Which would make the
parenthetical comment unnecessary.)

> 	va_end(ap);		/* No return needed for void functions. */
> }

I think that comment counts as "obvious". (If not, it at least belongs
on its own line, since it's not talking about the va_end.)

-- Dan