ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5. 코드베이스의 망령
    Technique/Programmer 2017. 1. 30. 14:23
    반응형

    억은 시간이 흐르면 예전 같지 않다. 오래된 코드 역시 마찬가지다.

    그 안에는 함수 그렘린과 오타 악마가 숨어 있을 수 있다. 작성 당시엔 완벽하다고 생각했을 것이다.

    하지만 예전 코드를 비판적으로 바라보면 필연적으로 온갖 종류의 버그를 찾아내게 될 것이다.


    프로그래머로서 자질은 자신이 작성한 코드가 아닌, 그것을 대하는 태도와 작성하는 방식에 의해 결정된다.

    오래된 코드를 다시 들여다보는 것은 새로운 경험이다. 


    1. 외관

    일부 언어에 사실상 표준 코딩 레이아웃 스타일이 있음에도, 스스로 오랜 시간 고민하며 찾아낸 수많은 레이아웃 이슈들이 남아 있다.

    그런 레이아웃 이슈들은 현재 프로젝트에서 사용되는 코딩 관습, 또는 다년간의 실험을 거친 경험에 근거한다.

    익숙해진 각각의 코딩 스타일은 별다를 것이 없지만, 하나의 프로젝트에서 나타나는 일관성 없는 코딩 스타일은 모두를 정체하게 만든다.



    2. 최신기술

    라이브러리의 증가와 더불어 기존 기능 중 일부는 사용되지 않게된다. 이러한 진화는 예전에 작성한 코드를 시대에 뒤쳐지게 만든다.

    예전 코드를 처음 읽는 누군가는 새로운 언어나 새로운 라이브러리를 이해하지 못했다고 가정할 수도 있다. 하지만 그 코드를 작성하던 시점에는 그런 것들이 존재하지 않았을 뿐이다.

    최신 기술은 코드, 특히 오래되고 방치된 코드보다 훨씬 빠르게 변화한다.



    3. 관례

    각 언어에는 고유의 구문과 라이브러리 집합이 있으며 나름의 최선의 관행 사용법이 있다. 

    이러한 관례는 경험이 풍부한 사용자가 선택한 것으로 오랜 시간 선호되어온 방법이다.

    이 같은 관례는 중요하다. 경험 많은 프로그래머라면 존재하길 기대하는 것이다. 익숙한 형태의 관례는 그 범위가 약간 넓은 편이긴 하지만, 프로그래머가 코드 수준의 수렁에 빠지는 대신 전체 코드 디자인에만 집중할 수 있도록 해준다. 보통 일반적인 실수나 버그를 방지하는 패턴을 공식화 해준다.

    오래된 코드를 다시 들여다보면서 관례에서 얼마나 벗어났는지 살펴보는 일은 꽤나 당황스러운 작업이다. 현재 작업 중인 언어의 허용 관례에 대해 자세한 내용을 알고 있다면, 기존의 비관례적인 코드가 잘못된 것으로 보일 것이다.



    4. 설계 결정 사항

    코드 설계를 수립하는 데 더 나은 방식이 있음을 깨닫는다. 이는 경험에서 우러나온다. 실수도 해보고, 여러 코드를 읽어보고, 재능 있는 다른 개발자와 일해보면 금세 설계 기술이 늘었음을 느끼게 될 것이다.



    5. 버그

    버그야말로 오래된 코드베이스로 돌아가는 이유 중 하나일 것이다. 새로운 시각에서 재 검토해보면, 때로는 이전에 놓친 명백한 문제를 발견할 수 있다. 특정 종류의 버그에 지독하게 당해본 뒤에 예전의 코드로 되돌아가면, 해당 코드에 숨어 있는 잠재적인 버그를 자연스럽게 발견하게 된다.



    기존의 코드를 돌아보는 것은 자신을 위한 코드 리뷰이자 가치있는 행동이다. 예전 코드중 일부를 틈틈히 되 돌아 보아야한다. 그당시의 프로그래밍에 사용했던 방식을 지금도 좋아하고 있는가? 그 이후 얼마나 배웠는가?

    시간의 흐름과 더불어 프로그래밍 세상이 얼마나 변화했는지, 그리고 자신의 기술이 얼마나 나아졌는지에 대해 감사하는 것은 중요하다. 더 이상 적절하지 않다고 느껴지는 예전의 코드를 찾아내느 것은 좋은 일이다. 이는 많이 배웠고 더 나아졌음을 의미한다. 

    지금 당장은 예전 코드를 고칠기회가 없을 수도 있지만, 자신이 어디서 비롯되었는가를 아는 것은 코딩 경력에 있어 어디로 향해야 할지 감을 잡는데 도움을 준다.

    예전의 코드를 돌아보는 데 시간을 들인다면 흥미롭고 교휸적인 수업을 듣게 될 수 있다.

    반응형

    'Technique > Programmer' 카테고리의 다른 글

    7. 똥통에서 뒹굴기  (0) 2017.02.05
    6. 경로 탐색  (0) 2017.02.02
    4. 코드줄여 개선하기  (0) 2017.01.26
    3. 코드 적게 쓰기  (0) 2017.01.24
    2. 정돈된 코드 유지하기  (0) 2017.01.04

    댓글

Designed by Tistory.