[Yum] some refactoring...

seth vidal skvidal at phy.duke.edu
Wed Oct 30 12:24:27 UTC 2002


On Tue, 2002-10-29 at 18:59, Vladimir Bormotov wrote:
>                 Hi!
> 
>  now clientStuff.take_action() looks:
>   
> ============== cut =========== 
>  def take_action(cmds, nulist, uplist, newlist, obslist, tsInfo,
>                  HeaderInfo, rpmDBInfo, obsdict):
>     from yummain import usage
> 
>     _command = cmds.pop(0)
> 
>     if (conf.uid != 0) and \
>        (_command in ['install', 'update', 'clean', 'upgrade', 'erase']):
>       errorlog(0, _('You need to be root to perform these commands'))
>       sys.exit(1)
> 
>     if _command == 'install':
>         action_install(cmds, nulist, tsInfo, HeaderInfo, rpmDBInfo)
>     elif _command == 'provides':
>         action_provides(cmds, nulist, HeaderInfo, rpmDBInfo)
>         sys.exit(0)
>     elif _command == 'update':
>         action_update(cmds, nulist, uplist, newlist, obslist, tsInfo,
>                       HeaderInfo, rpmDBInfo)
>     elif _command == 'upgrade':
>         action_upgrade(cmds, nulist, uplist, obslist, tsInfo, HeaderInfo,
>                        rpmDBInfo, obsdict)
>     elif _command in ['erase', 'remove']:
>         action_erase(cmds, tsInfo, rpmDBInfo)
>     elif _command == 'list':
>         action_list(cmds, nulist, uplist, newlist, HeaderInfo, rpmDBInfo)
>         sys.exit(0)
>     elif _command == 'info':
>         action_info(cmds, nulist, uplist, newlist, HeaderInfo, rpmDBInfo)
>         sys.exit(0)
>     elif _command == 'clean':
>         action_clean(cmds, HeaderInfo, rpmDBInfo)
>         sys.exit(0)
>     else:
>         usage()
> ============== cut =========== 
> 
>  1. I just "extract" each action into separate function, named action_*
>  2. List object can pop element, as result we pop command from cmds, once.
>  
>   each case modified like this:
>   
>     -    elif cmds[0] == 'info':
>     -        cmds.remove(cmds[0])
>     +    elif _command == 'info':
>   
>  I think, result very pretty ;)
>   


I like the single pop instead of multiple cmds.remove

but I don't understand - is there a benefit from naming the variable
_command? Is it just to imply that it should be a private variable? I
thought _ didn't do anything but __ really made it private. Is that
right?

-sv






More information about the Yum mailing list