[Tutor] How to design the structure of multi-steps(and substeps) scripts

leechau charlze at sohu.com
Mon Apr 11 02:43:25 CEST 2011


Hi everybody. I wrote a script to run BVT and it's code structure like this:

def step1:
    local_var1 = ...
    # some other variable definitions for step1
    def substep11:
        pass
    def substep12:
        pass
    # more substeps

def step2:
    local_var1 = ...
    # some other variable definitions for step2
    def substep21:
        pass
    def substep22:
        pass
    # more substeps

# more steps ...

def stepN:
    #vars and substeps...

global_var1 = ...
# more global var definitions...
if step1.return_success:
    step2
    step3
    ...
    stepN

As you see, this script consists of serveral steps(a list of commands),
and a step often consists of several substeps. I used to put all the
steps in one module, where one step corresponding to one funciton and
one substep corresponding to one nested function. It's now a headache to
maintain this script because of totally 1000+ lines of code. Meanwhile
when I manipulate different projects with this script I need to modify
the value of some variables and detailed task logic. Obviously it's a
dirty work to modify the source code directly for different projects. So
I wonder if I should put different steps in different modules to shorten
the length of each module? If I should put the default value of a
variable and high level task logic in a abstract class, and define
specific value and detailed task logic in concrete subclass? Is there
any design patterns available for this kind of multi-steps scripts?

Thanks!
-- 
leechau


More information about the Tutor mailing list