inflearn-study-3
Readable Code: 읽기 좋은 코드를 작성하는 사고법
Practical Testing: 실용적인 테스트 가이드
강의와 함께한 인프런 워밍업 클럽 스터디 3기 – 백엔드 클린 코드, 테스트 코드 (Java, Spring Boot)
2주차 회고 입니다.
이번 주는 클린 코드 작성법에 이어 코드 구조와 리팩토링, 그리고 테스트 코드 작성법을 본격적으로 학습했습니다.
‘스터디 카페 이용권 선택 시스템’의 기존 시스템에 중복된 로직과 혼재된 책임을 명확히 분리하고, 객체지향 원칙을 준수하여 코드 구조를 개선하는 리팩토링 미션입니다.
1. 기존의 복잡한 분기 조건(if-else)을 메서드로 깔끔하게 정리했습니다.
public void run() {
// 1) passType 선택 (시간권/주단위/고정석)
StudyCafePassType passType = inputHandler.getPassTypeSelectingUserAction();
// 2) pass 선택
StudyCafePass selectedPass = selectPass(passType);
// 3) 사물함 선택 (고정석 only)
StudyCafeLockerPass lockerPass = maybeSelectLocker(selectedPass);
// 4) 주문 객체 생성 & 결과 출력
StudyCafeOrder order = new StudyCafeOrder(selectedPass, lockerPass);
outputHandler.showOrderResult(order);
}
Java2. 할인 및 총금액 계산 로직을 전담하는 객체를 만들어 로직을 명확히 했습니다.
public int getDiscountAmount() {
return (int) (selectedPass.getPrice() * selectedPass.getDiscountRate());
}
public int getTotalPrice() {
int discountPrice = getDiscountAmount();
int lockerPrice = (lockerPass != null) ? lockerPass.getPrice() : 0;
return selectedPass.getPrice() - discountPrice + lockerPrice;
}
Java3. 파일 접근 방식을 인터페이스와 구현체로 나누어 유지보수와 확장성을 높였습니다.
리팩토링을 통해 코드 가독성과 유지보수성이 눈에 띄게 향상되었습니다. 특히 객체지향 원칙(SRP, DIP)을 철저히 적용한 결과, 각 객체가 단 하나의 명확한 책임을 가지면서, 향후 변경이 발생해도 최소한의 수정만으로 대응 가능해졌습니다. 규칙의 절대성이 아닌 “적정선”을 찾는 것이 매우 중요하다는 점을 깊이 깨달았습니다.
이번 주 스터디를 통해 “코드는 언제나 적정한 수준의 추상과 구체 사이에서 균형을 잡아야 한다”는 중요한 원칙을 다시 한번 실감했습니다. 앞으로도 적절한 추상화와 구체적인 구현 사이의 “적정선”을 끊임없이 고민하며, 클린하고 안정적인 코드를 지속적으로 작성하는 개발자가 되도록 노력하겠습니다. 감사합니다!
테스트 시 의존성 주입(Dependency Injection)과 Mockito Spring 애플리케이션을 개발하다 보면, 테스트 코드에서 실제 빈(Bean)을 사용하지…
들어가며 스프링 기반 프로젝트에서 좋은 설계 구조와 테스트 전략은 소프트웨어 품질과 유지보수성에 직결됩니다. 최근 학습한…
Readable Code: 읽기 좋은 코드를 작성하는 사고법Practical Testing: 실용적인 테스트 가이드 강의와 함께한 인프런 워밍업 클럽…
들어가며 코드를 작성할 때 종종 "이 로직을 어떻게 단순하고 읽기 쉽게 표현할 수 있을까?" 고민하게…
HTTP 상태코드란 무엇인가? HTTP 상태코드(HTTP Status Code)는 서버가 클라이언트의 요청을 처리한 결과를 수치화된 코드로 나타내는…