
On Jan 17, 2016, at 11:10, Brett Cannon <brett at python.org> wrote:
While doing a review of http://bugs.python.org/review/26129/ ... update PEP 7 to remove the optionality of curly braces
On Mon Jan 18 03:39:42 EST 2016, Andrew Barnert pointed out:
There are two ways you could do that.
[The one most people are talking about, which often makes an if-clause visually too heavy ... though Alexander Walters pointed out that "Any excuse to break code out into more functions... is usually the right idea."] if (!obj) { return -1; }
Alternatively, it could say something like "braces must not be omitted; when other C styles would use a braceless one-liner, a one-liner with braces should be used instead; otherwise, they should be formatted as follows"
That "otherwise" gets a bit awkward, but I like the idea. Perhaps "braces must not be omitted, and should normally be formatted as follows. ... Where other C styles would permit a braceless one-liner, the expression and braces may be moved to a single line, as follows: " if (x > 5) { y++ } I think that is clearly better, but it may be *too* lightweight for flow control. if (!obj) { return -1; } does work for me, and I think the \n{} may actually be useful for warning that flow control takes a jump. One reason I posted was to point to a specific example already in PEP 7 itself: if (type->tp_dictoffset != 0 && base->tp_dictoffset == 0 && type->tp_dictoffset == b_size && (size_t)t_size == b_size + sizeof(PyObject *)) return 0; /* "Forgive" adding a __dict__ only */ For me, that return is already visually lost, simply because it shares an indentation with the much larger test expression. Would that be better as either: /* "Forgive" adding a __dict__ only */ if (type->tp_dictoffset != 0 && base->tp_dictoffset == 0 && type->tp_dictoffset == b_size && (size_t)t_size == b_size + sizeof(PyObject *)) { return 0; } or: /* "Forgive" adding a __dict__ only */ if (type->tp_dictoffset != 0 && base->tp_dictoffset == 0 && type->tp_dictoffset == b_size && (size_t)t_size == b_size + sizeof(PyObject *)) { return 0; } -jJ -- If there are still threading problems with my replies, please email me with details, so that I can try to resolve them. -jJ