Thread: Re: Support isEmptyStringInfo
On Wed, Mar 23, 2022 at 8:33 AM Ashutosh Bapat <ashutosh.bapat.oss@gmail.com> wrote: > We have (StringInfo::len == 0) checks at many places. I thought it > would be better to wrap that into a function isEmptyStringInfo() to > make those checks more readable and also abstract the logic to check > emptiness of a StringInfo. I think this will be useful to extensions > outside core which also have these checks. They won't need to worry > about that logic/code being changed in future; rare but not impossible > case. I think that the code is perfectly readable as it is and that this change makes it less so. -- Robert Haas EDB: http://www.enterprisedb.com
Robert Haas <robertmhaas@gmail.com> writes: > I think that the code is perfectly readable as it is and that this > change makes it less so. Yeah, after a quick look through this patch I'm unimpressed too. The new code is strictly longer, and it requires the introduction of distracting "!" and "&" operators in many places. regards, tom lane
At Wed, 23 Mar 2022 10:13:43 -0400, Tom Lane <tgl@sss.pgh.pa.us> wrote in > Robert Haas <robertmhaas@gmail.com> writes: > > I think that the code is perfectly readable as it is and that this > > change makes it less so. > > Yeah, after a quick look through this patch I'm unimpressed too. > The new code is strictly longer, and it requires the introduction > of distracting "!" and "&" operators in many places. The struct members are not private at all. In that sense StringInfo is not a kind of class of C/Java but like a struct of C/C++ at least to me. I think encapsulating only ".len == 0" doesn't help. Already in many places we pull out buf.data to use it separately from buf, we have a dozen of instances of "buf.len (<|>|<=|>=) <some length>" and even "buf.data[buf.len - 1] == '\n'" About read-easiness, isEmptyStringInfo(str) slightly spins my eyes than str->len == 0. regards. -- Kyotaro Horiguchi NTT Open Source Software Center