[DB-SIG] Table Oriented Programming

Robert Brewer fumanchu at amor.org
Fri Jan 28 23:19:11 CET 2005


Brad Clements wrote:
> The code that creates the above query (or those like it) is 
> getting pretty long. I'm 
> interested in more expressive mechanisms that still retain 
> the ability to understand...

You have a lot of logic in there that I don't think is reducible; the
structure, however, is made more manageable by refactoring. I'd *start*
by passing an object instead of a string as the dataSet parameter, and
building attributes and methods into each object rather than using the
large if/else statements. That is, rather than

    if dataSet == 'ShipmentCharges':
        shipcols = self.shipmentChargesColumns
        packageColumns = ()
        queryShipmentCharges = True

you could write:

    q = Query()
    dataSet.populate(q, opts)

...and stuff the dataset-specific logic into the ShipmentCharges class.
Find the common code to all classes and stuff that into a superclass
from which the other classes inherit.

And so on ;)


Robert Brewer
MIS
Amor Ministries
fumanchu at amor.org


More information about the DB-SIG mailing list