서비스의 결제 로직을 담고 있는 3000 줄 짜리 코드를 헤집어가며 버그를 찾아내야 한다면? 아마 나라면 곳곳에 퍼져 있는 똑같은 일을 하고 있는 코드들을 함수화 하는 것 부터 시작할 것이다. 존재하는 코드를 함수로 감싸고, 원래 코드가 있던 자리를 함수 호출 하나로 대체하는 건 간단하다. 수정하기 전의 코드와 정확히 똑같이 동작할 것도 보장된다. 줄줄이 쌓인 코드를 3~4줄 짜리의 함수로 만들면 읽기도 나름 쉬워진다.




def func():
    # do a
    # do b
    # do c
    pass




def func_a():
    pass # do a

def func_b():
    pass # do b

def func_c():
    pass # do c

def func():
    func_a()
    func_b()
    func_c()



 그러나 단순히 함수화로만 리펙토링이 끝나는 것은 아니다. 새로운 클래스를 생성하고, 로직을 캡슐화 해야 한다면? 새로운 클래스를 싱글턴으로 해야 할지 말아야 할지 고민하는 상황이라면? A 클래스를 상속하는 B 클래스에 새로이 생성자를 만들어주고 싶다면? 과연 이전과 똑같이 코드가 동작할 것을 보장할 수 있을까? 아리까리한 상황을 확실히 정리해 보자 한다.



+ Recent posts