Message ID | xmqq8si21mlz.fsf_-_@gitster.c.googlers.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Re* [PATCH v4] submodule: port subcommand 'set-url' from shell to C | expand |
On Fri, May 8, 2020 at 11:18 AM Junio C Hamano <gitster@pobox.com> wrote: > + - Do not explicitly compare an integral value with constant 0 or a > + pointer value with constant NULL for equality; just say !value > + instead. To validate a counted array at ptr that has cnt elements > + in it, write: > + > + if (!ptr || !cnt) > + BUG("array should not be empty at this point"); > + > + and not: > + > + if (ptr == NULL || cnt == 0); > + BUG("array should not be empty at this point"); This talks only about '=='. People might still use 0 or NULL with '!='. I wonder if the example can include '!=', as well. Perhaps: if (!ptr) BUG("..."); if (cnt) foo(ptr, cnt); instead of: if (ptr == NULL) BUG("..."); if (cnt != 0) foo(ptr, cnt); or something. Also, would you want to talk about not comparing against NUL character? if (*s) foo(s); instead of: if (*s != '\0') foo(s); Maybe that's overkill since NUL is an integral value which is already covered by your earlier statement (but perhaps some people would overlook that).
Eric Sunshine <sunshine@sunshineco.com> writes: > On Fri, May 8, 2020 at 11:18 AM Junio C Hamano <gitster@pobox.com> wrote: >> + - Do not explicitly compare an integral value with constant 0 or a >> + pointer value with constant NULL for equality; just say !value >> + instead. To validate a counted array at ptr that has cnt elements >> + in it, write: >> + >> + if (!ptr || !cnt) >> + BUG("array should not be empty at this point"); >> + >> + and not: >> + >> + if (ptr == NULL || cnt == 0); >> + BUG("array should not be empty at this point"); > > This talks only about '=='. Yup. The text would need a matching change, though. > People might still use 0 or NULL with > '!='. I wonder if the example can include '!=', as well. Perhaps: > > if (!ptr) > BUG("..."); > if (cnt) > foo(ptr, cnt); > > instead of: > > if (ptr == NULL) > BUG("..."); > if (cnt != 0) > foo(ptr, cnt); > > or something. Or more succinctly: if (!ptr || cnt) BUG("we must have an empty array at this point"); perhaps? > Also, would you want to talk about not comparing against NUL character? > > if (*s) > foo(s); > > instead of: > > if (*s != '\0') > foo(s); > > Maybe that's overkill since NUL is an integral value which is already > covered by your earlier statement (but perhaps some people would > overlook that). Yeah, it might be worth saying it explicitly. I dunno.
On Fri, May 08, 2020 at 08:57:09AM -0700, Junio C Hamano wrote: > Eric Sunshine <sunshine@sunshineco.com> writes: > > This talks only about '=='. > > Yup. The text would need a matching change, though. Here's a re-roll with the necessary changes. > > if (!ptr) > > BUG("..."); > > if (cnt) > > foo(ptr, cnt); > > Or more succinctly: > > if (!ptr || cnt) > BUG("we must have an empty array at this point"); I considered that but thought it might be too "cute", however, seeing it written out, it looks fine, so I used it in the re-roll. > > Also, would you want to talk about not comparing against NUL character? > > Yeah, it might be worth saying it explicitly. I dunno. Rather than giving this a separate example in the re-roll, I just mentioned '\0' in the text. --- >8 --- From: Junio C Hamano <gitster@pobox.com> Subject: [PATCH] CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- Documentation/CodingGuidelines | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 390ceece52..6dfc47ed7d 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -236,6 +236,18 @@ For C programs: while( condition ) func (bar+1); + - Do not explicitly compare an integral value with constant 0 or '\0', + or a pointer value with constant NULL. For instance, to validate a + counted array ptr that has cnt elements, write: + + if (!ptr || cnt) + BUG("empty array expected"); + + and not: + + if (ptr == NULL || cnt != 0); + BUG("empty array expected"); + - We avoid using braces unnecessarily. I.e. if (bla) {
Eric Sunshine <sunshine@sunshineco.com> writes: > From: Junio C Hamano <gitster@pobox.com> > Subject: [PATCH] CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL > > Signed-off-by: Junio C Hamano <gitster@pobox.com> > Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> > --- > Documentation/CodingGuidelines | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines > index 390ceece52..6dfc47ed7d 100644 > --- a/Documentation/CodingGuidelines > +++ b/Documentation/CodingGuidelines > @@ -236,6 +236,18 @@ For C programs: > while( condition ) > func (bar+1); > > + - Do not explicitly compare an integral value with constant 0 or '\0', > + or a pointer value with constant NULL. For instance, to validate a > + counted array ptr that has cnt elements, write: I think this should be counted array <ptr, cnt> is initialized but has no elements, write: > + > + if (!ptr || cnt) > + BUG("empty array expected"); > + > + and not: > + > + if (ptr == NULL || cnt != 0); > + BUG("empty array expected"); > + > - We avoid using braces unnecessarily. I.e. > > if (bla) {
On Fri, May 08, 2020 at 09:38:17AM -0700, Junio C Hamano wrote: > Eric Sunshine <sunshine@sunshineco.com> writes: > > + - Do not explicitly compare an integral value with constant 0 or '\0', > > + or a pointer value with constant NULL. For instance, to validate a > > + counted array ptr that has cnt elements, write: > > I think this should be > > counted array <ptr, cnt> is initialized but has no elements, write: You're right. Here's a corrected version. I also applied s/a/that/ in the second line to improve the grammar a bit. --- >8 --- From: Junio C Hamano <gitster@pobox.com> Subject: [PATCH v3] CodingGuidelines: do not ==/!= compare with 0 or '\0' or NULL Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Eric Sunshine <sunshine@sunshineco.com> --- Documentation/CodingGuidelines | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 390ceece52..803a3b9bde 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -236,6 +236,18 @@ For C programs: while( condition ) func (bar+1); + - Do not explicitly compare an integral value with constant 0 or '\0', + or a pointer value with constant NULL. For instance, to validate that + counted array <ptr, cnt> is initialized but has no elements, write: + + if (!ptr || cnt) + BUG("empty array expected"); + + and not: + + if (ptr == NULL || cnt != 0); + BUG("empty array expected"); + - We avoid using braces unnecessarily. I.e. if (bla) {
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines index 390ceece52..41a89dd845 100644 --- a/Documentation/CodingGuidelines +++ b/Documentation/CodingGuidelines @@ -236,6 +236,19 @@ For C programs: while( condition ) func (bar+1); + - Do not explicitly compare an integral value with constant 0 or a + pointer value with constant NULL for equality; just say !value + instead. To validate a counted array at ptr that has cnt elements + in it, write: + + if (!ptr || !cnt) + BUG("array should not be empty at this point"); + + and not: + + if (ptr == NULL || cnt == 0); + BUG("array should not be empty at this point"); + - We avoid using braces unnecessarily. I.e. if (bla) {