솔솔

[워밍업 클럽 3기] BE클린코드&테스트코드 Day8 본문

내인생's 기록/도전

[워밍업 클럽 3기] BE클린코드&테스트코드 Day8

솔솔하네 2025. 3. 13. 12:35
반응형

🟡 오늘의 목표 진도


섹션7. 리팩토링 연습

 - 연습 프로젝트 소개

 - 리팩토링(1) - 추상화 레벨

 - 리팩토링(2) - 객체의 책임과 응집도

 - 리팩토링(3) - 관점의 차이로 달라지는 추상화

 - 키워드 정리

섹션8. 기억하면 좋은 조언들

 - 능동적 읽기

 - 오버 엔지니어링

 - 은탄환은 없다

 - 키워드 정리

섹션8. Outro

 - 마무리하며

 

 

🟠 공부 정리


1. 능동적 일기

 - 복잡하거나 엉망인 코드를 읽고 이해하려 할 때, 리팩토링하면서 읽기

   (공백으로 단락 구분, 메서드와 객체로 추상화, 주석으로 이해한 내용 표기하며 읽기)

 - 우리에게는 언제든 돌아갈 수 있는 git reset --hard 가 있음

    (리팩토링시에도 작업단위를 잘개 쪼개서 언제든지 원하는 시점으로 돌아갈 수 있도록 학기)

 - 도메인 지식 늘리기, 작성자의 의도 파악하기

2. 오버 엔지니어링

 - 필요한 걱정 수준보다 더 높은 수준의 엔지니어링

    ex) 구현체가 하나인 인터페이스 

    - 인터페이스 형태가 아키텍처 이해에 도움을 주거나, 근시일 내에 구현체가 추가될 가능성이 높다면 OK

    - 구현체를 수정할 때마다 인터페이스도 수정해야 함

    - 코드 탐색에 영향을 줌. 애플리케이션이 비대해 짐

  ex) 너무 이른 추상화

   - 정보가 숨겨지기 때문에 복잡도가 높아짐

   - 후대 개발자들이 선대의 의도를 파악하기가 어려움

3. 은탄환은 없다

 - 클린 코드도 은탄환이 아니다

 - 실무: 지속 가능한 소프트웨어의 품질 VS. 기술 부채를 안고 가는 빠른 결과물

    (미래 시점에 잘 고치도록 할 수 있는 코드 센스가 필요 -> 클린 코드의 사고법을 기반으로 결정)

 - 모든 기술과 방법론은 적정 기술의 범위 내에서 사용되어야 함

 - 도구라는 것은, 일단 그것을 한계까지 사용할 줄 아는 사람이 그것을 사용하지 말아야 할 때도 아는 법

  (한계까지 연습해보고, 적정 수준, 적정 시점을 깨닫기)

 

 

🔵 공부 후 나의 생각 


이번 리팩토링을 진행하면서,

내가 부족했던 점을 확실히 깨닫게 되었다.

 

가장 큰 문제는 코드를 꼼꼼하게 읽지 못했다는 것이다.
그로 인해 중복된 코드가 어디에 있는지 빠르게 파악하지 못했고, 리팩토링 과정에서 더 많은 시간이 걸렸다.
앞으로는 코드 전체를 더 면밀히 살펴보는 습관을 들여야겠다.

 

또한, 두 번의 리팩토링을 거치면서

OCP(개방-폐쇄 원칙, Open-Closed Principle)에 대한 이해가 더 깊어졌다.

예전에는 개념적으로만 알고 있었지만, 직접 적용해보면서 실제로 어떤 상황에서 필요한지 더 명확하게 느꼈다.

 

특히, 과거에 PG(Payment Gateway) 연동 작업을 했던 경험이 떠올랐다.
우리나라에는 다양한 PG사가 존재하며,

상황에 따라 특정 PG사를 사용하다가 다른 PG사로 변경할 수도 있고,

여러 PG사를 동시에 사용할 수도 있다.

 

이런 경우 OCP 개념을 적용하여 PG사의 결제 방식이 바뀌더라도

코드 수정 없이 유연하게 확장할 수 있도록 설계하는 것이 중요하다는 생각이 들었다.


즉, PG사별로 구체적인 로직을 직접 구현하는 것이 아니라,

상위 레벨에서 추상화된 인터페이스를 만들어 관리하면 변경에 유연하게 대응할 수 있을 것이다.

 

이번 리팩토링을 통해 리팩토링의 중요성뿐만 아니라, 객체 지향 설계 원칙(OOP)과의 연관성도 다시금 깨닫게 되었다.
앞으로도 실전에서 직접 적용해보며 더 깊이 있는 이해를 쌓아가야겠다. 

 

 

 

 

* 현재 인프런 워밍업 클럽에 참여하여 아래 강의 수강 중입니다.

https://www.inflearn.com/roadmaps/5699

 

클린 코드 & 테스트 코드 가이드 로드맵 로드맵 - 인프런

Spring, TDD 스킬을 학습할 수 있는 로드맵을 인프런에서 만나보세요.

www.inflearn.com

https://www.inflearn.com/course/readable-code-%EC%9D%BD%EA%B8%B0%EC%A2%8B%EC%9D%80%EC%BD%94%EB%93%9C-%EC%9E%91%EC%84%B1%EC%82%AC%EA%B3%A0%EB%B2%95

 

Readable Code: 읽기 좋은 코드를 작성하는 사고법 강의 | 박우빈 - 인프런

박우빈 | , [사진]저 사람은 코드를 되게 잘 짜네. 어떻게 저런 코드를 작성하는 걸까? 🤔어떤 사람의 코드를 보고 '와 잘 짰다' 라고 느낄 때가 있습니다.우리가 '코드를 잘 짠다' 라고 표현하는

www.inflearn.com