워밍업 클럽 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를 완벽히 준수하는지 점검하기
다른 사람들의 코드도 분석하며 다양한 접근법을 학습하기
이번 주는 단순한 코드 작성을 넘어, 설계를 고민하는 습관을 기르는 과정이었다. 한 주가 지나고 나니, 처음보다 훨씬 더 깊이 있는 시각을 가지게 된 것 같아 뿌듯하다.
다음 주도 꾸준히 성장하는 한 주가 되길 바라며, 더 나은 코드와 사고방식을 갖추도록 노력해야겠다!
댓글을 작성해보세요.