> (2) In functions, variables are often declared together in one > paragraph, and then, later, initialized in another paragraph, as in: > > int i; > char *s; > > /* stuff */ > > i = 0; > s = nil; > > rather than something like: > > int i = 0; > char *s = nil;
this (the former method) is good practice since mingling declaration and initialization can lead to big copypasta errors if^w when the code is reorganized. > (3) Lots of global variables are used, without any distinguishing > syntax, i.e. "char *f". I prefer to designate global variables with > something like a leading underscore, i.e. "char *_filename". i think the plan 9 convention is to keep few enough globals so than one can be expected to remember them. > (4) In ARGBEGIN/ARGEND blocks, boolean switches are often set using the > "++" operator rather than "|= 1", i.e.: this is trivia. (and i'd argue that generally both are wrong; it's not a bit array, and the count is not important.) > (5) P9 code tends to repeat constructs such as "argv[i]" over and over > throughout the code, like: > > for(i = 0; i < argc; i++){ > somestuff(argv[i]); > otherstuff(argv[i]); > } > > whereas I would typically use something like: > > int argnum; > char *argstr; this is a variant of hungarian notation. what value does it add? the declarations are clear enough. everyone knows what argv/argc are. i've fallen into most of these traps myself. i used to declare main as main(int c, char **v). what i found was fitting in and understanding the whys of the local conventions is much more important than whatever quirks you have yourself. - erik