From: Joe Perches <joe@perches.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: Dan Carpenter <dan.carpenter@oracle.com>,
Alice Ferrazzi <alice.ferrazzi@gmail.com>,
gregkh@linuxfoundation.org, devel@driverdev.osuosl.org,
linux-kernel@vger.kernel.org
Subject: [PATCH] CodingStyle: Add tab indentation avoidance tips
Date: Wed, 20 Mar 2013 09:26:54 -0700 [thread overview]
Message-ID: <1363796814.16270.36.camel@joe-AO722> (raw)
In-Reply-To: <20130320152951.GO21522@ZenIV.linux.org.uk>
Add Al's comments in from https://lkml.org/lkml/2013/3/20/345
Signed-off-by: Joe Perches <joe@perches.com>
---
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
next prev parent reply other threads:[~2013-03-20 16:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-03-20 12:26 [PATCH] Staging: comedi: serial2002: fixed consistent spacing issue Alice Ferrazzi
2013-03-20 12:47 ` Dan Carpenter
2013-03-20 15:29 ` Al Viro
2013-03-20 16:04 ` Joe Perches
2013-03-20 16:06 ` H Hartley Sweeten
2013-03-20 16:26 ` Joe Perches [this message]
2013-03-20 16:52 ` [PATCH] CodingStyle: Add tab indentation avoidance tips Al Viro
2013-03-20 22:57 ` Joe Perches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1363796814.16270.36.camel@joe-AO722 \
--to=joe@perches.com \
--cc=alice.ferrazzi@gmail.com \
--cc=dan.carpenter@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@ZenIV.linux.org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®