inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 3기] BE 클린코드&테스트 - 2주차 발자국

rjf1138
0

💡 강의 핵심 내용 정리

📝Readable Code

1. 주석의 역할과 사용 원칙

🚫 주석을 최소화해야 하는 이유

언제 주석을 사용해야 할까?


2. 변수와 메서드 정렬 순서

🔍 변수 정렬 원칙

📌 메서드 정렬 원칙

  1. 공개 메서드 (public) 먼저 배치

    • 상태 변경 > 판별 > 조회 순으로 배치.

    • 같은 기능을 하는 메서드는 그룹화하여 정렬.

  2. **비공개 메서드 (private)**는 공개 메서드에서 호출하는 순서대로 정렬.


3. 코드 리팩토링 & 가독성 향상

🏗 주석 없이 코드로 의미 전달하기 (Enum 활용)

java복사편집// 

기존 코드 private int gameStatus = 0; // 0: 게임 중, 1: 승리, -1: 패배 // ✅ 개선 코드 public enum GameStatus { IN_PROGRESS("진행 중"), WIN("승리"), LOSE("패배"); }

🎯 객체 역할 분리


4. 패키지 구조 개선

📌 패키지는 "문맥"을 제공한다


5. IDE 도구 활용

코드 자동 정렬

🔍 코드 품질 유지 도구


6. 오버 엔지니어링 방지

🚫 불필요한 추상화 & 인터페이스 남발


7. 실무에서 코드 품질 vs 빠른 개발

균형 잡힌 선택이 필요하다


8. 결론: "완벽한 코드"는 없다


💻Practical Testing

1. 테스트 코드의 필요성

🤔 왜 테스트 코드가 중요한가?

🚫 수동 테스트의 문제점

java복사편집@Test
void add_manual_test() {
    CafeKiosk cafeKiosk = new CafeKiosk();
    cafeKiosk.add(new Americano());

    System.out.println(">>> 담긴 음료 수 : " + cafeKiosk.getBeverages().size());
}

사람이 직접 확인해야 하므로 자동화되지 않고 오류가 발생할 가능성이 높음.

JUnit5 & AssertJ 활용한 자동화 테스트

java복사편집@Test
void add() {
    CafeKiosk cafeKiosk = new CafeKiosk();
    cafeKiosk.add(new Americano());

    assertThat(cafeKiosk.getBeverages()).hasSize(1);
    assertThat(cafeKiosk.getBeverages().get(0).getName()).isEqualTo("아메리카노");
}

자동화된 검증을 통해 일관성 유지
테스트 실패 시 바로 원인 파악 가능


2. 테스트 케이스 설계

🔍 경계값 테스트

답변 0