코드 수정

내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.

코드 수정

소스코드를 보다가 다음과 같은 코드를 발견했다. 명령행 인수 분석해 딕셔너리에 넣는 코드인데, 이렇게 복잡할 필요가 있을까 생각되어 잠시 코드를 들여다 봤다.

def cmd_option_parse():
    cmd_argv = {}
    argv = sys.argv[1:]
    for arg in argv:
        if arg.startswith('-'):
            arg = arg[1:]

        if arg.startswith('--'):
            arg = arg[2:]

        p = arg.split('=')
        if len(p) == 2:
            key = p[0]
            val = p[1]
            cmd_argv[key] = val
        else:
            cmd_argv[arg] = ''
    return cmd_argv

인수 입력 형식은 =을 기준으로 key=value 형식으로 주어지며, ---가 코드에 있는 것은 인수 중에 ---로 시작하는 경우 이를 제거하기 위한 코드다. 결국은 key=value 형식을 분석해 딕셔너리에 넣되 -를 제거하면 되는 것이다. 다음과 같이 하는 것이 훨씬 단순하고 이해하기 쉽다.

def getArgMap():
    argMap = {}
    for a in sys.argv[1:]:
        try:
            (k,v)=a.split('=')
            argMap[k.lstrip('-')]=v
        except:
            argMap[a.lstrip('-')]=''
    return argMap

if가 많이 들어가 있는 코드는 보기도 안 좋고 이해하기도 쉽지 않다.