Clark, thanks for your answer. I use ``if (flag)'' only when `flag' is a boolean.
but in this case, it *is* a boolean, as i stated, and as can be seen in subst.c: + { + if (check_nullness) + report_error (_("%s: parameter null or not set"), name); + else + report_error (_("%s: parameter is not set"), name); + } On Sun, Mar 4, 2018 at 4:43 AM, Clark Wang <dearv...@gmail.com> wrote: > On Sun, Mar 4, 2018 at 5:15 AM, don fong <df...@dfong.com> wrote: > >> admittedly this is a very minor point, but i am curious. this has to do >> with coding standards for bash source. >> >> consider an if statement in C (or bash, for that matter). which is form >> is >> better? >> >> Form (A): >> >> if (flag) >> X(); >> else >> Y(); >> >> Form (B): >> >> if (flag == 0) >> Y(); >> else >> X(); >> >> they are functionally equivalent. but IMHO (A) is slightly more readable. >> first because flag (in this case) is intended to be a boolean value not >> arithmetic, and second because it's simpler to think about an if when the >> condition is positive. >> >> this is what i'd say if (B) were under code review. >> >> i submitted a patch with code in form (A). it was added to the code base >> in form (B). was there a good reason for this mutation? >> > > I believe the main reason is to keep consistent with existing code. > > I used to use ``if (flag)'' but these days I'd prefer ``if (flag != /* or > == */ 0)'' which is explicit that ``flag'' is not a boolean var. I use > ``if (flag)'' only when `flag' is a boolean. It's similar I used to write > ``if (ptr)'' but now I prefer ``if (ptr != NULL)'' which is explicit that > `ptr' is a pointer. >