
워밍업 클럽 3기 BE 클린코드&테스트 - 1주차 발자국
발자국 - 학습 회고
강의 수강
📌 학습 내용 요약
이번 주에는 SOLID 원칙과 Clean Code에 대해 집중적으로 학습했다. 특히, 개념적인 이해뿐만 아니라 실제 코드에 적용하는 연습을 병행하며, 단순히 원칙을 아는 것과 이를 실천하는 것의 차이를 느낄 수 있었다.
SRP(단일 책임 원칙): 클래스는 하나의 책임만 가져야 한다.
OCP(개방-폐쇄 원칙): 기존 코드를 변경하지 않고 확장할 수 있도록 설계해야 한다.
LSP(리스코프 치환 원칙): 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
ISP(인터페이스 분리 원칙): 클라이언트가 필요하지 않은 기능에 의존하지 않도록 인터페이스를 분리해야 한다.
DIP(의존성 역전 원칙): 상위 모듈이 하위 모듈에 직접 의존하지 않고 추상화에 의존해야 한다.
Clean Code 관련해서는 함수의 길이를 줄이고, 네이밍을 명확하게 하는 것의 중요성을 다시금 체감했다.
🔍 학습 회고
이번 주는 단순히 원칙을 공부하는 것이 아니라, 실제 코드에 적용하며 문제를 해결하는 과정에서 많은 고민을 했다. 기존에 알고 있던 개념들이 실전에서는 어떻게 변하는지 경험해볼 수 있는 시간이었고, 특히 OCP와 DIP 원칙을 적용하는 과정에서 생각보다 어려움을 겪었다.
이전에는 새로운 기능을 추가할 때 기존 코드를 직접 수정하는 방식으로 접근했는데, 이번 학습을 통해 확장성을 고려한 설계를 어떻게 할지 고민하는 습관이 생겼다.
🌟 스스로 칭찬하고 싶은 점
개념 학습에서 그치지 않고, 직접 적용해보려 노력했다.
코드 리뷰를 하면서 다른 사람의 접근법도 참고하며 내 코드에 반영했다.
실수했더라도 다시 돌아가 원인을 분석하고 개선하는 태도를 유지했다.
🤔 아쉬웠던 점과 보완하고 싶은 점
DIP 원칙을 적용할 때, 인터페이스를 활용하는 방법에 대한 이해가 부족했다.
디자인 패턴을 함께 학습하면 더 효과적으로 원칙을 적용할 수 있었을 것 같다.
코드 리팩토링 과정에서 너무 고민을 많이 하면서 시간을 초과한 경우가 있었다.
🎯 다음 주 학습 목표
SOLID 원칙을 활용하여 기존 코드 리팩토링을 해보기
디자인 패턴(특히 전략 패턴, 팩토리 패턴)을 함께 학습하여 원칙 적용을 더 자연스럽게 만들기
리팩토링 시 트레이드오프를 고려하며 현실적인 선택을 하는 연습하기
미션
🏆 미션 해결 과정
이번 주 미션에서는 **읽기 좋은 코드(Readable Code)**를 작성하는 것을 목표로 했다. 특히, OCP 원칙을 적용하여 결제 방식 추가 시 기존 코드를 수정하지 않도록 리팩토링하는 과정이 가장 기억에 남는다.
✅ 접근 방법
기존 코드에서는
if-else
문으로 결제 방식을 처리하고 있었다.새로운 결제 방식이 추가될 경우 기존 코드를 수정해야 하는 구조였다.
이를 해결하기 위해
PaymentStrategy
인터페이스를 생성하고, 결제 방식별 클래스를 따로 만들었다.Order
클래스가 특정 결제 방식에 의존하지 않도록 설계했다.
🛠 해결 과정
처음에는 단순히 인터페이스를 분리하는 것이 OCP를 적용하는 것이라고 생각했다.
그러나 실제로는 객체가 어떻게 생성되고 주입되는지까지 고려해야 OCP를 제대로 적용할 수 있음을 깨달았다.
최종적으로 DI(의존성 주입)를 활용하여
Order
클래스가 결제 방식을 직접 관리하지 않도록 수정했다.
🔥 미션 회고
처음부터 완벽하게 원칙을 적용하려 하기보다, 작은 단위로 적용해보는 것이 효과적이었다.
리팩토링 과정에서 인터페이스 분리만으로는 해결되지 않는 문제들이 있음을 깨닫고, 더 깊이 고민할 수 있었다.
예전에는 단순히 돌아가는 코드에 집중했다면, 이제는 유지보수와 확장성을 함께 고려하게 되었다.
💡 배운 점
OCP는 단순히 인터페이스를 만드는 것이 아니라 기능 추가 시 기존 코드 수정이 필요 없는 구조를 만드는 것이 핵심이다.
DIP를 적용할 때, 생성자 주입을 활용하면 유연한 코드 설계가 가능하다.
처음부터 완벽한 구조를 만들려고 하기보다, 점진적으로 개선하는 것이 현실적이다.
📌 앞으로 코드를 작성할 때 고려해야 할 점
새로운 기능 추가 시 OCP를 완벽히 준수하는지 점검하기
다른 사람들의 코드도 분석하며 다양한 접근법을 학습하기
이번 주는 단순한 코드 작성을 넘어, 설계를 고민하는 습관을 기르는 과정이었다. 한 주가 지나고 나니, 처음보다 훨씬 더 깊이 있는 시각을 가지게 된 것 같아 뿌듯하다.
다음 주도 꾸준히 성장하는 한 주가 되길 바라며, 더 나은 코드와 사고방식을 갖추도록 노력해야겠다!
댓글을 작성해보세요.