https://www.yes24.com/Product/Goods/89649360
리팩터링 2판 - 예스24
개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 『리팩토링』은,
www.yes24.com
1. 리팩터링을 할 때 가장 먼저 해야할 일! - 테스트 코드
리팩토링을 진행할 때, 테스트 코드는 매우 중요한 역할을 합니다. 테스트 코드는 현재 코드의 동작을 보장하고, 변경 후에도 기능이 올바르게 작동하는지를 확인하는 데 필수적입니다. 특히, 복잡한 시스템에서 기능이 다수의 모듈과 상호작용할 때, 테스트 코드는 리팩토링 중 발생할 수 있는 예기치 않은 오류를 사전에 방지할 수 있습니다.
리팩토링의 핵심 목표 중 하나는 코드의 가독성과 유지보수성을 높이는 것입니다. 하지만 코드 변경이 항상 예상한 대로 작동하지 않을 수 있기 때문에, 테스트 코드는 이러한 변화를 안전하게 수행할 수 있는 보호망을 제공합니다. 따라서, 모든 주요 기능과 경계 상황을 포괄하는 테스트 코드를 작성함으로써, 리팩토링 과정에서 발생할 수 있는 문제를 조기에 발견하고 수정할 수 있습니다. 이는 개발자의 자신감을 높이고, 코드 품질을 유지하는 데 큰 도움이 됩니다.
리팩터링을 하기 위해서 테스트 코드는 선택이 아니라 필수란 말씀!
2. 테스트 코드 작성
지난 시간에 작성한 코드는 링크를 참고하세요.
https://griotold.tistory.com/6
리팩터링 2판 - Java로 정리
https://www.yes24.com/Product/Goods/89649360 리팩터링 2판 - 예스24개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계
griotold.tistory.com
package org.study.refactoringpractice.play;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
class TheaterTest {
private Theater theater;
@BeforeEach
void setUp() {
theater = new Theater();
}
@DisplayName("원하는 문자열이 출력되는 자가진단 테스트")
@Test
void testOne() {
// Given
Play hamlet = new Play("hamlet", "Hamlet", "tragedy");
Play asYouLikeIt = new Play("as-like", "As You Like It", "comedy");
Play othello = new Play("othello", "Othello", "tragedy");
Performance hamletPerformance = new Performance("hamlet", 55);
Performance asYouLikeItPerformance = new Performance("as-like", 35);
Performance othelloPerformance = new Performance("othello", 40);
Map<String, Play> plays = Map.of(
"hamlet", hamlet,
"as-like", asYouLikeIt,
"othello", othello
);
String customerName = "BigCo";
Invoice invoice = new Invoice(customerName,
List.of(hamletPerformance, asYouLikeItPerformance, othelloPerformance));
// When
String result = theater.statement(invoice, plays);
String expected = "statement for (customer: BigCo)\n" +
"Hamlet: $650.00 (55 seats)\n" +
"As You Like It: $580.00 (35 seats)\n" +
"Othello: $500.00 (40 seats)\n" +
"Total amount: $1,730.00\n" +
"You earned: 47 points\n";
// Then
assertThat(result).isEqualTo(expected);
}
}
테스트 코드를 작성했으니, 이제부터 마음 놓고 리팩터링을 수행할 수 있게 되었습니다.
2 - 2. 자가진단 테스트
개발자가 일일이 코드의 동작 여부를 눈으로 확인하는 것은 비효율적입니다. 대신, 자동화된 테스트는 코드 변경 후 테스트가 통과되는지 여부를 빠르게 확인할 수 있도록 해줍니다. 이는 개발자가 코드 변경 후 발생할 수 있는 문제를 신속하게 발견하고 수정할 수 있게 하며, 코드 품질을 유지하는 데 중요한 역할을 합니다. 자동화된 테스트를 통해 초록불로 모든 테스트가 통과되었음을 확인하면, 코드가 정상적으로 작동하고 있음을 쉽게 확인할 수 있습니다. 이로 인해 개발자는 더 효율적으로 작업할 수 있고, 코드의 신뢰성을 높일 수 있습니다.
3. 테스트 통과 확인

4. 마무리
오늘은 리팩터링을 수행하기전, 테스트 코드를 작성해보았습니다. 테스트 코드는 일종의 "안전망"과 같은 역할을 해줌으로써, 개발자가 코드를 망가뜨릴 걱정없이 리팩터링을 수행할 수 있게 해줍니다.
테스트는 코드 변경 후 기능이 올바르게 작동하는지를 보장하며, 자동화된 테스트는 개발자가 일일이 검증할 필요 없이 코드의 안정성을 확인할 수 있게 해줍니다. 리팩터링 전 테스트 코드를 작성하는 습관을 길러, 더 나은 코드 품질을 유지할 수 있도록 노력합시다.
https://github.com/Griotold/refactoring-practice
GitHub - Griotold/refactoring-practice: 마틴 파울러 - 리팩토링 2판 - java로 연습
마틴 파울러 - 리팩토링 2판 - java로 연습. Contribute to Griotold/refactoring-practice development by creating an account on GitHub.
github.com
'리팩토링' 카테고리의 다른 글
Null 체크에서 Optional 패턴으로 – Enum 변환 메서드 리팩토링 스토리 (0) | 2025.05.02 |
---|---|
리팩터링 2판 - Java로 정리 - (3) statement() 함수 쪼개기 (0) | 2024.06.07 |
리팩터링 2판 - Java로 정리 (0) | 2024.06.05 |
https://www.yes24.com/Product/Goods/89649360
리팩터링 2판 - 예스24
개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 『리팩토링』은,
www.yes24.com
1. 리팩터링을 할 때 가장 먼저 해야할 일! - 테스트 코드
리팩토링을 진행할 때, 테스트 코드는 매우 중요한 역할을 합니다. 테스트 코드는 현재 코드의 동작을 보장하고, 변경 후에도 기능이 올바르게 작동하는지를 확인하는 데 필수적입니다. 특히, 복잡한 시스템에서 기능이 다수의 모듈과 상호작용할 때, 테스트 코드는 리팩토링 중 발생할 수 있는 예기치 않은 오류를 사전에 방지할 수 있습니다.
리팩토링의 핵심 목표 중 하나는 코드의 가독성과 유지보수성을 높이는 것입니다. 하지만 코드 변경이 항상 예상한 대로 작동하지 않을 수 있기 때문에, 테스트 코드는 이러한 변화를 안전하게 수행할 수 있는 보호망을 제공합니다. 따라서, 모든 주요 기능과 경계 상황을 포괄하는 테스트 코드를 작성함으로써, 리팩토링 과정에서 발생할 수 있는 문제를 조기에 발견하고 수정할 수 있습니다. 이는 개발자의 자신감을 높이고, 코드 품질을 유지하는 데 큰 도움이 됩니다.
리팩터링을 하기 위해서 테스트 코드는 선택이 아니라 필수란 말씀!
2. 테스트 코드 작성
지난 시간에 작성한 코드는 링크를 참고하세요.
https://griotold.tistory.com/6
리팩터링 2판 - Java로 정리
https://www.yes24.com/Product/Goods/89649360 리팩터링 2판 - 예스24개발자가 선택한 프로그램 가치를 높이는 최고의 코드 관리 기술마틴 파울러의 『리팩터링』이 새롭게 돌아왔다.지난 20년간 전 세계
griotold.tistory.com
package org.study.refactoringpractice.play;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.List;
import java.util.Map;
import static org.assertj.core.api.Assertions.assertThat;
class TheaterTest {
private Theater theater;
@BeforeEach
void setUp() {
theater = new Theater();
}
@DisplayName("원하는 문자열이 출력되는 자가진단 테스트")
@Test
void testOne() {
// Given
Play hamlet = new Play("hamlet", "Hamlet", "tragedy");
Play asYouLikeIt = new Play("as-like", "As You Like It", "comedy");
Play othello = new Play("othello", "Othello", "tragedy");
Performance hamletPerformance = new Performance("hamlet", 55);
Performance asYouLikeItPerformance = new Performance("as-like", 35);
Performance othelloPerformance = new Performance("othello", 40);
Map<String, Play> plays = Map.of(
"hamlet", hamlet,
"as-like", asYouLikeIt,
"othello", othello
);
String customerName = "BigCo";
Invoice invoice = new Invoice(customerName,
List.of(hamletPerformance, asYouLikeItPerformance, othelloPerformance));
// When
String result = theater.statement(invoice, plays);
String expected = "statement for (customer: BigCo)\n" +
"Hamlet: $650.00 (55 seats)\n" +
"As You Like It: $580.00 (35 seats)\n" +
"Othello: $500.00 (40 seats)\n" +
"Total amount: $1,730.00\n" +
"You earned: 47 points\n";
// Then
assertThat(result).isEqualTo(expected);
}
}
테스트 코드를 작성했으니, 이제부터 마음 놓고 리팩터링을 수행할 수 있게 되었습니다.
2 - 2. 자가진단 테스트
개발자가 일일이 코드의 동작 여부를 눈으로 확인하는 것은 비효율적입니다. 대신, 자동화된 테스트는 코드 변경 후 테스트가 통과되는지 여부를 빠르게 확인할 수 있도록 해줍니다. 이는 개발자가 코드 변경 후 발생할 수 있는 문제를 신속하게 발견하고 수정할 수 있게 하며, 코드 품질을 유지하는 데 중요한 역할을 합니다. 자동화된 테스트를 통해 초록불로 모든 테스트가 통과되었음을 확인하면, 코드가 정상적으로 작동하고 있음을 쉽게 확인할 수 있습니다. 이로 인해 개발자는 더 효율적으로 작업할 수 있고, 코드의 신뢰성을 높일 수 있습니다.
3. 테스트 통과 확인

4. 마무리
오늘은 리팩터링을 수행하기전, 테스트 코드를 작성해보았습니다. 테스트 코드는 일종의 "안전망"과 같은 역할을 해줌으로써, 개발자가 코드를 망가뜨릴 걱정없이 리팩터링을 수행할 수 있게 해줍니다.
테스트는 코드 변경 후 기능이 올바르게 작동하는지를 보장하며, 자동화된 테스트는 개발자가 일일이 검증할 필요 없이 코드의 안정성을 확인할 수 있게 해줍니다. 리팩터링 전 테스트 코드를 작성하는 습관을 길러, 더 나은 코드 품질을 유지할 수 있도록 노력합시다.
https://github.com/Griotold/refactoring-practice
GitHub - Griotold/refactoring-practice: 마틴 파울러 - 리팩토링 2판 - java로 연습
마틴 파울러 - 리팩토링 2판 - java로 연습. Contribute to Griotold/refactoring-practice development by creating an account on GitHub.
github.com
'리팩토링' 카테고리의 다른 글
Null 체크에서 Optional 패턴으로 – Enum 변환 메서드 리팩토링 스토리 (0) | 2025.05.02 |
---|---|
리팩터링 2판 - Java로 정리 - (3) statement() 함수 쪼개기 (0) | 2024.06.07 |
리팩터링 2판 - Java로 정리 (0) | 2024.06.05 |