[ Pobierz całość w formacie PDF ]
.However, if you have a complex function, and you suspect that aless-than-gifted first-year high-school student might not evenunderstand what the function is all about, you should adhere to themaximum limits all the more closely.Use helper functions withdescriptive names (you can ask the compiler to in-line them if you thinkit's performance-critical, and it will probably do a better job of itthat you would have done).Another measure of the function is the number of local variables.Theyshouldn't exceed 5-10, or you're doing something wrong.Re-think thefunction, and split it into smaller pieces.A human brain cangenerally easily keep track of about 7 different things, anything moreand it gets confused.You know you're brilliant, but maybe you'd liketo understand what you did 2 weeks from now.Chapter 5: CommentingComments are good, but there is also a danger of over-commenting.NEVERtry to explain HOW your code works in a comment: it's much better towrite the code so that the _working_ is obvious, and it's a waste oftime to explain badly written code.Generally, you want your comments to tell WHAT your code does, not HOW.Also, try to avoid putting comments inside a function body: if thefunction is so complex that you need to separately comment parts of it,you should probably go back to chapter 4 for a while.You can makesmall comments to note or warn about something particularly clever (orugly), but try to avoid excess.Instead, put the comments at the headof the function, telling people what it does, and possibly WHY it doesit.Chapter 6: You've made a mess of itThat's ok, we all do.You've probably been told by your long-time unixuser helper that "GNU emacs" automatically formats the C sources foryou, and you've noticed that yes, it does do that, but the defaults ituses are less than desirable (in fact, they are worse than randomtyping - a infinite number of monkeys typing into GNU emacs would nevermake a good program).So, you can either get rid of GNU emacs, or change it to use sanervalues.To do the latter, you can stick the following in your.emacs file:(defun linux-c-mode ()"C mode with adjusted defaults for use with the Linux kernel."(interactive)(c-mode)(setq c-indent-level 8)(setq c-brace-imaginary-offset 0)(setq c-brace-offset -8)(setq c-argdecl-indent 8)(setq c-label-offset -8)(setq c-continued-statement-offset 8)(setq indent-tabs-mode nil)(setq tab-width 8))This will define the M-x linux-c-mode command.When hacking on amodule, if you put the string -*- linux-c -*- somewhere on the firsttwo lines, this mode will be automatically invoked.Also, you may wantto add(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$".linux-c-mode)auto-mode-alist))to your.emacs file if you want to have linux-c-mode switched onautomagically when you edit source files under /usr/src/linux.But even if you fail in getting emacs to do sane formatting, noteverything is lost: use "indent".Now, again, GNU indent has the same brain dead settings that GNU emacshas, which is why you need to give it a few command line options.However, that's not too bad, because even the makers of GNU indentrecognize the authority of K&R (the GNU people aren't evil, they arejust severely misguided in this matter), so you just give indent theoptions "-kr -i8" (stands for "K&R, 8 character indents")."indent" has a lot of options, and especially when it comes to commentre-formatting you may want to take a look at the manual page.Butremember: "indent" is not a fix for bad programming
[ Pobierz całość w formacie PDF ]