From: | <korryd(at)enterprisedb(dot)com> |
---|---|
To: | <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Coding style question |
Date: | 2006-11-02 18:34:19 |
Message-ID: | 1162492459.7998.254.camel@sakai.localdomain |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Henry B. Hotz | 2006-11-02 18:45:24 | Re: Design Considerations for New Authentication Methods |
Previous Message | Jeff Davis | 2006-11-02 18:31:12 | Re: Tsearch2 index size |