Day 29 - Rq, TDD

haxxru log;·2026년 4월 10일
post-thumbnail

이 글은 2026년 04월 10일 작성된 글입니다.

오늘은 명언 게시판 코드에 Stream 도입과 Rq 클래스 구현, 그리고 컨트롤러 구조 개선과 TDD
개념까지 정리했다.


1. Stream 도입 (기존 코드 → Stream)

기존에는 반복문과 조건문을 사용해 데이터를 처리했다. 하지만 Stream을
사용하면 더 간결하게 표현할 수 있다.

list.stream()
    .filter(e -> e.getId() == id)
    .findFirst();

핵심 - 반복문 없이 데이터 처리 가능 - filter, map 등으로 선언형 코드
작성 가능


2. removeIf를 통한 데이터 삭제

컬렉션에서 조건에 맞는 요소를 제거할 때 사용한다.

list.removeIf(e -> e.getId() == id);

핵심 - 반복문 없이 삭제 가능 - 코드가 훨씬 간결해짐


3. 컨트롤러와 Rq 클래스

컨트롤러는 명령어를 처리하는 역할을 한다. 식당의 점원과 같은 역할을
한다.


4. Rq 클래스 개념

Rq는 Request의 약자로, 컨트롤러에서 자주 사용하는 로직을 모아둔
클래스이다.

Rq rq = new Rq("목록?page=5&searchKeyword=영광");

int page = rq.getParamAsInt("page", -1);
String keyword = rq.getParam("searchKeyword", "");

5. Rq 클래스 구현

public String getParam(String paramName, String defaultValue) {
    if (paramsMap.containsKey(paramName)) {
        return paramsMap.get(paramName);
    } else {
        return defaultValue;
    }
}
public int getParamAsInt(String paramName, int defaultValue) {
    String value = getParam(paramName, "");

    if (value.isEmpty()) return defaultValue;

    try {
        return Integer.parseInt(value);
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

6. TDD 개념

TDD(Test-Driven Development)는 테스트를 먼저 작성하고, 그 테스트를
통과시키는 방식으로 개발하는 방법이다.

TDD 3단계

  • Red: 실패하는 테스트 작성
  • Green: 테스트 통과 코드 작성
  • Refactor: 코드 개선

7. 자동 테스트 vs 수동 테스트

구분 자동 테스트 수동 테스트


실행 주체 컴퓨터 사람
실행 속도 빠름 느림
신뢰도 높음 낮음


✅ 정리

  • Stream을 사용하면 반복문 없이 데이터를 간결하게 처리할 수 있다.
  • removeIf를 사용하면 조건에 맞는 요소를 쉽게 제거할 수 있다.
  • Rq 클래스는 명령어 파싱 로직을 분리하여 컨트롤러를 단순하게 만든다.
  • getParam과 getParamAsInt를 통해 안전하게 파라미터를 처리할 수 있다.
  • TDD는 테스트를 먼저 작성하고 기능을 구현하는 개발 방식이다.
  • Red-Green-Refactor 사이클을 통해 점진적으로 코드를 개선할 수 있다.
  • 자동 테스트를 사용하면 빠르고 안정적으로 코드 품질을 유지할 수 있다.

0개의 댓글