4장. 코드 줄여 개선하기

새로운 코드를 추가하여 시스템을 개선할 수 있다. 반대로 코드를 제거하여 시스템을 개선할 수도 있다.

마른 체질이라면 살이 쪄야한다. 반대로 뚱뚱하다면 살을 빼야한다. 인간다운 삶을 위해 자기관리가 필수이듯, 코드도 관리가 필수적이다. 기능이 필요해지기 전까지 추가로 코드를 만들지 않아야 한다. 앞으로 이 기능이 추가되지 않을까? 생각하며 코드를 만드는 행위는, 겨울에 사냥을 못해 굶어죽을까봐 미리 음식을 먹어두는 행위와 똑같다. 21세기 이전부터 인간은 미리 먹어둘 필요가 없었다, 살만 찔 뿐이지. 코드도 똑같다. 미리 만들어둔 코드는 복잡도만 올릴 뿐, 아무런 도움이 되지 않는다. 필요하기 전까지 만들지 말자. You Aren't Gonna Need It. 유식하게 YAGNI 라고 읽어보자.

죽은 코드는 당신을 죽이지는 않지만, 이전보다 삶을 더 힘들게 만들 것이다.

죽은 코드라고 해서 유지보수하지 않을 수 있을까?

@Deprecated
public String oldPrettify(String str) {
    String prepared = prepare(str);
    // ...
    return result;
}

public String newPrettify(String str) {
    String prepared = prepare(str);
    // ...
    return result;
}

private String prepare(String plain) {
    // ...
    return renew;
}

이 상황에서 prepare 메서드를 수정했다고 하자. 끔찍하게도... public String prepare(String plain, String option) 모양이 되었다고 하자. 이 상태에서 데드코드를 건드리지 않을 수 있을까? 물론 우리에겐 메서도 오버로딩이란 훌륭한 방법이 있지만... 데드코드 삭제가 본질적인 해결 방법이지 않을까? 프로젝트가 커지면 커질수록 불필요한 코드가 늘어나는 것은 숙명이다. 하지만 죽은 코드를 삭제하지 않는다면 불필요한 코드는 기하급수적으로 늘어날 것이다.

5장. 코드베이스의 망령

기존의 코드를 돌아보는 것은 자신을 위한 코드 리뷰이자 가치 있는 행동이다.

모두들 한번쯤 경험이 있을 것이다. "XX, 이거 어떤 놈이 짰어!", 그 어떤 놈은 6개월 전의 자신이다. 자괴감 느끼지 않아도 된다. 그 6개월 동안에 성장이 있었기 때문에 그렇게 보이는 것이다. 자신감과 자부심을 느껴도 된다. 다만 수정해 개선하지 않는다면 과거로부터 도망칠 뿐이다. 알프레도 아저씨는 토토에게 다 잊어버리고 떠나라고 했지만 (시네마천국을 보면 이해할 수 있다. 깨알 같은 명작 추천.), 떠나는 개발자는 무책임할 뿐이다.
작성할 때 완벽했다고 생각했던 코드도, 조금만 지나고 보면 이상해보인다. 아마 버그도 찾을 수 있을 것이다. 꼭, 돌아보자.

profile
집사없는 개발 고양이

0개의 댓글