Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/share/misc



On 20-08-01 23:07, Taylor R Campbell wrote:
  | > Module Name:    src
  | > Committed By:   lukem
  | > Date:           Sat Aug  1 02:45:36 UTC 2020
  | > 
  | > Modified Files:
  | >         src/share/misc: style
  | > 
  | > Log Message:
  | > style: prefer braces for single statement control statements
  | > 
  | > Prefer to use { braces } around single statements after
  | > control statements, instead of discouraging them.
  | > 
  | > Per discussion on tech-userlevel & tech-kern, where the significant
  | > majority of developers who responded (including current and former
  | > core members) prefer this new style.
  | 
  | Hmm...that's not the conclusion I got from the thread.  What you proposed
  | (https://mail-index.netbsd.org/tech-userlevel/2020/07/12/msg012536.html),
  | and got consensus on, was:
  | 
  | - discourage braces around single statements
  | + permit braces around single statements
  | 
  | What you committed was:
  | 
  | - discourage braces around single statements
  | + prefer braces around single statements and add braces to all examples
  | 
  | At least two core members (me and kre) preferred the change you
  | originally proposed over the change you committed.
  | 
  | Personally I feel that braces around short statements hurt legibility
  | by adding unnecessary visual clutter, and make it more cumbersome to
  | have consistent patterns like
  | 
  | 	if (foo() == -1)
  | 		goto fail0;
  | 	if ((x = bar()) == -1)
  | 		goto fail1;
  | 	if (baz() == -1)
  | 		goto fail2;
  | 
  | which makes it more tempting to get clever with shortcuts for error
  | branches or with reversing the sense of the branch, and we have too
  | many bugs with clever shortcuts in error branches already.
  | 
  | We don't have a `goto fail' problem in NetBSD -- if we did, our
  | toolchain would detect it with -Werror=misleading-indentation, as I
  | just confirmed experimentally.  (Same goes for macros that expand to
  | multiple statements, with -Werror=multistatement-macros.)
  | 
  | Can you please restore this to the change you originally suggested,
  | along the lines of the attached patch?

  | Index: share/misc/style
  | ===================================================================
  | RCS file: /cvsroot/src/share/misc/style,v
  | retrieving revision 1.56
  | diff -p -p -u -r1.56 style
  | --- share/misc/style	1 Aug 2020 02:45:35 -0000	1.56
  | +++ share/misc/style	1 Aug 2020 22:54:53 -0000
  | @@ -241,9 +241,8 @@ main(int argc, char *argv[])
  |  			errno = 0;
  |  			num = strtol(optarg, &ep, 10);
  |  			if (num <= 0 || *ep != '\0' || (errno == ERANGE &&
  | -			    (num == LONG_MAX || num == LONG_MIN)) ) {
  | +			    (num == LONG_MAX || num == LONG_MIN)) )
  |  				errx(1, "illegal number -- %s", optarg);
  | -			}
  |  			break;
  |  		case '?':
  |  		default:
  | @@ -256,16 +255,16 @@ main(int argc, char *argv[])
  |  
  |  	/*
  |  	 * Space after keywords (while, for, return, switch).
  | -	 * Braces are preferred for control statements
  | -	 * with only a single statement.
  | +	 *
  | +	 * Braces around single-line bodies are optional; use discretion.
  |  	 *
  |  	 * Forever loops are done with for's, not while's.
  |  	 */
  | -	for (p = buf; *p != '\0'; ++p) {
  | +	for (p = buf; *p != '\0'; ++p)
  |  		continue;		/* Explicit no-op */
  | -	}
  |  	for (;;) {
  | -		stmt;
  | +		stmt1;
  | +		stmt2;
  |  	}
  |  
  |  	/*
  | @@ -317,9 +316,8 @@ main(int argc, char *argv[])
  |  	}
  |  
  |  	/* No spaces after function names. */
  | -	if ((result = function(a1, a2, a3, a4)) == NULL) {
  | +	if ((result = function(a1, a2, a3, a4)) == NULL)
  |  		exit(1);
  | -	}
  |  
  |  	/*
  |  	 * Unary operators don't require spaces, binary operators do.
  | @@ -397,12 +395,10 @@ function(int a1, int a2, float fl, int a
  |  	 *
  |  	 * Use err/warn(3), don't roll your own!
  |  	 */
  | -	if ((four = malloc(sizeof(*four))) == NULL) {
  | +	if ((four = malloc(sizeof(*four))) == NULL)
  |  		err(1, NULL);
  | -	}
  | -	if ((six = (int *)overflow()) == NULL) {
  | +	if ((six = (int *)overflow()) == NULL)
  |  		errx(1, "Number overflowed.");
  | -	}
  |  
  |  	/* No parentheses are needed around the return value. */
  |  	return eight;
  | @@ -426,9 +422,8 @@ dirinfo(const char *p, struct stat *sb, 
  |  	_DIAGASSERT(p != NULL);
  |  	_DIAGASSERT(filedesc != -1);
  |  
  | -	if (stat(p, sb) < 0) {
  | +	if (stat(p, sb) < 0)
  |  		err(1, "Unable to stat %s", p);
  | -	}
  |  
  |  	/*
  |  	 * To printf quantities that might be larger than "long", include


I've reverted the change.

Bikeshed away.


Home | Main Index | Thread Index | Old Index