Add Al's comments in from https://lkml.org/lkml/2013/3/20/345 Signed-off-by: Joe Perches <joe@xxxxxxxxxxx> --- diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle index e00b8f0..c4ba183 100644 --- a/Documentation/CodingStyle +++ b/Documentation/CodingStyle @@ -836,6 +836,141 @@ next instruction in the assembly output: : /* outputs */ : /* inputs */ : /* clobbers */); + Chapter 20: + +Tips to avoid overly tab indented code. + +Tip 1: + if (foo) { + A /* two lines */ + } else { + B /* huge pile of shite */ + } + return result; + +is equivalent to + + if (foo) { + A + return result; + } + B + return result; + +Tip 2: + while (1) { + A /* a couple of lines */ + if (foo) { + break; + } else { + B /* huge pile of shite */ + } + } + +is equivalent to + + while (1) { + A + if (foo) + break; + B + } + +Tip 3: + while (1) { + A /* moderate pile of shite, assigning foo */ + if (foo) { + B /* huge pile of shite */ + } + } + +is equivalent to + + while (1) { + A + if (!foo) + continue; + B + } + +Tip 4: + +functions are there for purpose. When you have two identical piles of +garbage (avert your eyes, or risk taking another look at your dinner) +such as + int unit, sign, min; + unit = + (data.value >> 10) & + 0x7; + sign = + (data.value >> 13) & + 0x1; + min = + (data.value >> 14) & + 0xfffff; + + switch (unit) { + case 0:{ + min = + min + * + 1000000; + } + break; + case 1:{ + min = + min + * + 1000; + } + break; + case 2:{ + min = + min + * 1; + } + break; + } + if (sign) + min = -min; + +you just might consider turning that pile of excrements into a helper +function. Incidentally, min = min * 1 is somewhat, er, pointless... + +Tip 5: + for (i = 0; i <= 4; i++) { + { + switch (i) { + case 0: c = non_NULL_1; ... break; + case 1: c = non_NULL_2; ... break; + case 2: c = non_NULL_3; ... break; + case 3: c = non_NULL_4; ... break; + case 4: c = non_NULL_5; ... break; + default: c = NULL; break; + } + if (c) { + pile_of_shite + } + } +might, perhaps, be taking defensive programming a bit too far... + +Tip 6: +The Vogon whose brain has produced that code up had been brought up on Pascal, +Ada or something worse, and had been badly traumatized by semantics of switch +and break. + switch (foo) { + case 0: { + bar = baz; + } break; + case 1: { + ..... + } + is not quite conventional for C. + +Tip 7: +Code flow is down, not across... + + Appendix I: References _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel