Re: Coding style question
| От | imad |
|---|---|
| Тема | Re: Coding style question |
| Дата | |
| Msg-id | 1f30b80c0611021053t526198a2red3488a06efdbca2@mail.gmail.com обсуждение исходный текст |
| Ответ на | Coding style question (<korryd@enterprisedb.com>) |
| Ответы |
Re: Coding style question
|
| Список | 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 по дате отправления: