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)을 철저히 적용한 결과, 각 객체가 단 하나의 명확한 책임을 가지면서, 향후 변경이 발생해도 최소한의 수정만으로 대응 가능해졌습니다. 규칙의 절대성이 아닌 “적정선”을 찾는 것이 매우 중요하다는 점을 깊이 깨달았습니다.
이번 주 스터디를 통해 “코드는 언제나 적정한 수준의 추상과 구체 사이에서 균형을 잡아야 한다”는 중요한 원칙을 다시 한번 실감했습니다. 앞으로도 적절한 추상화와 구체적인 구현 사이의 “적정선”을 끊임없이 고민하며, 클린하고 안정적인 코드를 지속적으로 작성하는 개발자가 되도록 노력하겠습니다. 감사합니다!
들어가며 소프트웨어가 처리해야 하는 데이터 양이 늘어날수록, 단순히 기능 구현만으로는 성능과 효율을 보장하기 어렵습니다. 특히…
들어가며 소프트웨어를 구현할 때 성능 최적화나 안정성을 높이려면, 단순히 고수준 코드만 신경 쓰는 것을 넘어…
들어가며 소프트웨어가 복잡해질수록, 단순히 알고리즘의 시간복잡도만으로는 모든 문제를 해결할 수 없습니다. 특히 운영체제 수준에서는 다중…
들어가며 복잡한 소프트웨어가 원활히 동작하려면 단순히 코드만 잘 짜는 것으로는 부족합니다. 트랜잭션 처리나 대규모 데이터…
들어가며 소프트웨어를 개발할 때 메모리 관리 방식은 프로그램의 안정성과 성능을 좌우하는 핵심 요소입니다. 특히 자바스크립트,…
들어가며 소프트웨어 개발자는 코드가 어떻게 실행되는지 정확히 이해해야 할 필요가 있습니다. 우리가 작성한 프로그램은 결국…