[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