Hello, all, I really do not like playing with arguments and classes internal
data that have the same name:

class DerivedExprNode : public TypedNode<ValueExprNode,
ExprNode::TYPE_DERIVED_EXPR>
{
public:
....
        virtual void findDependentFromStreams(const OptimizerRetrieval*
optRet,
->              SortedStreamList* streamList);
....
->      Firebird::Array<USHORT> streamList;

I think that playing here with streamList vs this->streamList is a recipe
for misreading the code and making mistakes:

void DerivedExprNode::findDependentFromStreams(const OptimizerRetrieval*
optRet,
        SortedStreamList* streamList)
{
1       arg->findDependentFromStreams(optRet, streamList);

2       for (USHORT* i = this->streamList.begin(); i !=
this->streamList.end(); ++i)
        {
                int derivedStream = *i;

                if (derivedStream != optRet->stream &&
                        (optRet->csb->csb_rpt[derivedStream].csb_flags &
csb_active))
                {
3                       if (!streamList->exist(derivedStream))
4                               streamList->add(derivedStream);
                }
        }
}

I would rather rename the member data to internalStreamList instead of the
param since the other redefinitions of the virtual function use the same
signature. Besides, I wonder why we use a custom definition for this stream
list,
        Firebird::Array<USHORT> streamList;
probably in this case, it's better than the canonical definition
typedef Firebird::HalfStaticArray<UCHAR, OPT_STATIC_ITEMS> StreamList;
that other places use?

Or do people prefer the code as it's now? Comments, please.

C.
---
Claudio Valderrama C. - www.cvalde.net
Consultant, SW developer.


------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to