need hint for refactoring
Diez B. Roggisch
deets at nospam.web.de
Wed Aug 9 09:16:07 EDT 2006
GHUM wrote:
> I have a bunch of function like:
>
> def p2neufrage(_):
> """ create new element"""
> anfrage,ergebnis=getanfrage()
> if ergebnis.get("status","ok") == "ok":
> wert=anfrage["feld"]
> # do something
> # unique here
>
>
> ergebnis["innerHTML"]=..... something ....
>
> #
> return simplejson.dumps(ergebnis, skipkeys=False,
> ensure_ascii=False, check_circular=True, allow_nan=True)
>
>
> so, everywhere there is the same beginning:
>
> anfrage,ergebnis=getanfrage()
>
> I analyze some transmitted jason-document; check for errors
>
> then I take the values out of the request, process it and fill the
> slots of a result ("ergebnis") dictionary, which is returned.
>
>
> So the beginning and the end of the function is allways repeated. It
> would be great to factor it out ... i startet with that ...getanfrage()
> call.
>
> Is there anything more possible?
Use a decorator, out of my head:
def foo(f):
def _w(*args, **kwargs):
anfrage,ergebnis=getanfrage()
new_args = (args[0],) + (anfrage, ergebnis) + args[1:]
f(*new_args, **kwargs)
return simplejson.dumps(ergebnis, skipkeys=False,
ensure_ascii=False, check_circular=True, allow_nan=True)
return _w
Then do
@foo
def p2neufrage(_, anfrage, ergebnis):
""" create new element"""
if ergebnis.get("status","ok") == "ok":
wert=anfrage["feld"]
# do something
# unique here
ergebnis["innerHTML"]=..... something ....
Diez
More information about the Python-list
mailing list