개발자는 기록이 답이다
[패스트캠퍼스] The RED: 백발의 개발자를 꿈꾸며 : 코드리뷰, 레거시와 TDD by 백명석, 최범균 온라인 완강 후기 본문
[패스트캠퍼스] The RED: 백발의 개발자를 꿈꾸며 : 코드리뷰, 레거시와 TDD by 백명석, 최범균 온라인 완강 후기
slow-walker 2023. 12. 15. 23:40"백발의 개발자를 꿈꾸며 👨🦳"
강의를 통해 코드리뷰, 레거시 리팩토링, TDD에 대한 더 깊은 이해와 실전 적용 능력을 키우는 것이 목표였습니다.
특히, 레거시 코드 개선과 TDD의 실제 활용법을 집중적으로 배우고 싶었습니다.
신규 프로젝트가 아니라면 유지보수하는 회사에 들어가게 될텐데,
기존의 레거시한 코드를 개선한다면 성과를 낼 수 있을 것이라고 판단했기 때문입니다.
🚩 레거시 코드란?
오래되었지만 여전히 사용되는 것
테스트가 없는 코드
모든 코드가 레거시 (극단적)
레거시 코드를 다루려면 해당 코드를 만든 개발자의 의도를 이해하고, 기능을 분석하는 데 많은 노력이 필요합니다. 레거시 코드는 종종 스파게티처럼 얽혀있고, 강한 의존성 때문에 개선을 시도할 때 사이드 이팩트가 발생할 우려가 있기 때문에 부담을 느끼게 됩니다.
사실 개발자는 이러한 레거시를 갖고 있는 서비스 덕분에 밥벌이를 할 수 있기 때문에,
레거시 코드를 개선하는 방법을 배우면서 두려움을 극복하고자 했습니다.
수강 후 달라진 점
수강 완료 후 레거시 코드를 다루면서 어떻게 개선할지 더 명확하게 알게 되었고, 리팩토링 시 주의해야 할 점도 더 잘 이해했어요.
그리고 TDD를 통해 코드를 작성하면서 유지보수성과 안정성을 어떻게 향상시킬 수 있는지도 깨닫게 되었습니다.
가장 인상 깊었던 것은 암호검사기를 TDD로 만드는 과정이었습니다.
TDD라는 걸 이론으로 처음 접했을 때에는
테스트코드와 실제 비즈니스 로직 코드가 서로 영향을 받지 않고 어떻게 구현부를 따로 구현할 수 있을지 헤맸습니다.
어떻게 구현부를 만들지 않고 바로 테스트코드를 만들 수 있을까?
먼저 암호 검사기라는 기능을 구현하는데 필요한 실패 케이스를 전부 다 정의하는 것입니다.
그리고 가장 테스트 하기 쉬운 실패 케이스부터 테스트 코드를 만들고, 해당 테스트를 통과시킬만 구현하고, 다음 테스트 케이스를 작성해가면서 코드를 정리하고 리팩토링하는 과정을 반복하는 것이었습니다.
1. parameter가 Null일 경우 Invalid 반환
2. parameter가 empty일 경우 Invalid 반환
3. 모든 조건을 충족했을 경우 Strong 반환
4. 두 조건을 충족했을 경우 Week반환
5. 한 조건을 충족했을 경우 Week반환
6. 아무 조건도 충족하지 않았을 경우 Invalid 반환
이렇게 Bottom up방식으로 테스트 코드를 작성하게 되면 모든 익셉션에 대해서 다 테스트 해볼 수 있어서 안정적인 코드를 만드는 것 같습니다. 저는 사실 클래스에 있는 속성이나 메서드를 정의하지 않고, 다른 곳에서 New키워드를 생성한다는 게 어색했었는데, 이렇게도 할 수 있다는 걸을 깨달았습니다.
텍스트로만 접했을때는 잘 이해가 안되었던 TDD라는 개념을 이렇게 한번에 이해할 수 있도록 코드상으로 잘 구현되어있어서 좋았습니다.
이제는 긴 메서드, 복잡한 구조, 테스트 부재 등 문제를 알아보고, 코드리뷰와 리팩토링을 통해 계속해서 품질을 향상시켜 나갈 수 있을 것 같습니다.
'본 게시물은 패스트캠퍼스 후기 이벤트 참여를 위해 작성되었습니다'
'개발 일지' 카테고리의 다른 글
공백기 1년 그리고 수습 3개월이 지난 지금의 회고 (3) | 2025.02.02 |
---|---|
레거시 시스템 개편의 기술 - 배달 플랫폼에서 겪은 N번의 개편 경험기 (0) | 2023.12.09 |
퇴사 후 코딩 공부 한달 째, 8월 마무리하고 9월 시작하면서 (0) | 2023.09.06 |
개발자들의 IT 축제, INFCON 인프콘 2023 다녀온 후기 (0) | 2023.08.31 |