평범한 레거시 코드 분석법
2021. 5. 13. 00:02처음 보는 소스라 쫄아서 남한테 미뤄서 안보게 되는 게 최악이다. 난 어떤 소스를 봐도 끄딱없어 다 분석할 수 있다는 자신감이 중요하다. - 어느 모 유튜브 개발자의 조언
너무 잘하려고 하지마세요. 그렇다고 못하진 마세요. 개발자는 코드를 읽을 줄 알아야합니다. 겁먹지 마세요. 구글링으로 코드 한줄한줄 이해할 수 있는 시대입니다. 앞으로 그러한 태도를 가지면 됩니다. - 어느 개발자 조언
레거시 코드란 IT업계에서 자신이 짠 코드가 아닌 남한테 물려받은 코드를 의미합니다. 보통 처음 부서에 오게되면 기존의 코드를 보게됩니다. 많은 양의 코드와 내부 구조를 알 수 없어 손도 댈 수 없는 상황이 생깁니다. 하지만 우리가 유지보수를 하기 위해 들어온 개발자라면 혹은 기존 코드에 어떤 기능들을 추가해야하는 개발자라면 반드시 기존 코드를 이해해야 작업이 가능할 겁니다. 이해가 없이는 손도 댈 수 없죠.
그래서 코드를 이해해야합니다. 어떻게 이해해야할까요? 필자의 생각은 "코드 보는 눈을 기르는 건 꼼수가 없다. 시간과 노력 그리고 방법에 있다." 라고 생각합니다.
이런 생각을 합니다. 레거시 코드를 분석을 한 사람과 못한 사람이 있을 때 분석을 했던 사람이 가진 건 무엇일까? 그것을 생각하며 레거시 코드를 위해 신입 개발자가 가져야할 태도, 분석법들에 대해서 포스팅해보았습니다.
가져야할 태도는 아래와 같습니다.
0. 참고할 팀 내부 문서를 찾고 개발자 문서를 마련해 두어라
1. 반드시 코드를 한줄한줄 이해해라.
영어문장 해석하듯, 한줄한줄 어떤 역할을 하는 지 머릿 속에서 상상하며 이해해라. 코드의 의미를 해석하여 읽어야합니다. 이해했으면 자신만의 주석을 달아 놓으세요.
2. 코드를 복기해라. 코드를 많이 읽고 보라. (단, 눈에 익숙할 때 까지)
3. Open source를 많이 보라.
Open source를 많이 보면 눈이 길러집니다. 이유는 많은 사람들이 고뇌해서 만든 소스이기 때문입니다. Open source를 많이 보라.
4. 네이밍에 대해서 공부해라.
변수명에서 이게 무슨 역할을 하는 지 바로 네이밍을 지을 수 있게 한다.
5. 시스템을 문서화, 시각화해라.
- 만능 변수, 객체, 클래스 찾아보기 (디펜던시가 높은)
- 만능 변수, 객체, 클래스의 역할 문서화 시각화
- 핵심 로직 문서화 -시각화
- UML 클래스 다이어그램
6. 주석 달아라.
- 기본 주석을 충분히 활용
- 주석으로 코드의 의미, 중요성, 위험성 등을 파악
- 분석이 오래 걸린 코드의 주석 추가
- TODO 주석 찾아보기
7. 기존 코드를 리팩터링 해라.
결과의 변경없이 코드 재구성
- 변수, 클래스명을 의미가 명확하도록 변경
- IDE(통합 개발 환경) 도움 받기
- public 클래스를 private 클래스로 변경
- 중복코드 변경
이런 작업은 구조 변경보단 부담없이 시도해볼 수 있는 리팩터링 입니다.
8. TC(테스트 케이스) 추가해라.
- TC는 리팩터링의 부담을 줄여줌.
- 전체 코드에서 커버되지 않은 부분을 찾아주는 툴도 존재함. 많이 활용하기
개발자 신입에게 기대하는 건 기존 시스템의 리프레쉬입니다. 그러려면 기존 코드를 어떻게든 숙지하고 이해하고 있어야 합니다. 레거시 코드를 분석하여 자신의 것으로 만들어 보는 건 어떨까요? 자신만의 코드의 이해도도 높아지고 개발 실력도 향상될 것입니다.
참고자료
'소프트웨어(Software)' 카테고리의 다른 글
소프트웨어 배포 생명 주기 (rc버전이란?) (0) | 2021.12.13 |
---|---|
[UML] UML이란? (Diagram의 종류) (0) | 2021.11.30 |
IT 온라인 교육 사이트 모음 (17개 사이트) (0) | 2021.04.28 |
클린 아키텍처를 읽고 (0) | 2021.01.24 |
Framework와 의존성 주입 (0) | 2021.01.14 |