Re: Coding style question - Mailing list pgsql-hackers
From | imad |
---|---|
Subject | Re: Coding style question |
Date | |
Msg-id | 1f30b80c0611021053t526198a2red3488a06efdbca2@mail.gmail.com Whole thread Raw |
In response to | Coding style question (<korryd@enterprisedb.com>) |
Responses |
Re: Coding style question
|
List | pgsql-hackers |
Shouldn't we turn on warnings by the compiler on uninitialized variables? This can also be helpful. --Imad www.EnterpriseDB.com On 11/2/06, korryd@enterprisedb.com <korryd@enterprisedb.com> wrote: > > I've noticed a trend in the PostgreSQL code base - for some reason, we tend > to avoid initializing automatic variables (actually, the code base is pretty > mixed on this point). > > For example in _bt_check_unique() we have: > ________________________________ > static TransactionId > _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, > Buffer buf, ScanKey itup_scankey) > { > TupleDesc itupdesc = RelationGetDescr(rel); > int natts = rel->rd_rel->relnatts; > OffsetNumber offset, > maxoff; > Page page; > BTPageOpaque opaque; > Buffer nbuf = InvalidBuffer; > > page = BufferGetPage(buf); > opaque = (BTPageOpaque) PageGetSpecialPointer(page); > maxoff = PageGetMaxOffsetNumber(page); > offset = _bt_binsrch(rel, buf, natts, itup_scankey, false); > ... > > > ________________________________ > > > Notice that four variables are not initialized; instead we assign values to > them immediately after declaring them. > > I would probably write that as: > ________________________________ > static TransactionId > _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, > Buffer buf, ScanKey itup_scankey) > { > TupleDesc itupdesc = RelationGetDescr(rel); > int natts = rel->rd_rel->relnatts; > Page page = BufferGetPage(buf); > OffsetNumber maxoff = PageGetMaxOffsetNumber(page); > BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); > OffsetNumber offset = _bt_binsrch(rel, buf, natts, itup_scankey, > false); > Buffer nbuf = InvalidBuffer; > ... > > ________________________________ > > > I'm not trying to be pedantic (it just comes naturally), but is there some > reason that the first form would be better? I know that there is no > difference in the resulting code, so this is purely a style/maintainability > question. > > I guess the first form let's you intersperse comments (which is good). > > On the other hand, the second form makes it easy to see which variables are > un-initialized. The second form also prevents you from adding any code > between declaring the variable and assigning a value to it (which is good in > complicated code; you might introduce a reference to an unitialized > variable). > > Just curious. > > -- Korry
pgsql-hackers by date: