원서 Chapter 25의 의존성 깨기(Dependency-Breaking) 기법들 중 modern Java에서 특히 유용한 핵심 기법들을 JDK 25 기준의 코드 예제와 함께 카탈로그 형태로 정리합니다.
Posts for: #Refactoring
WELC ver. 2026 Part 4: 대규모 코드 문제 다루기
비대한 클래스, 몬스터 메서드, 중복 코드 등 대규모 코드 문제를 다루는 전략을 JDK 25 기준의 modern Java 코드로 살펴봅니다. SRP, ISP, Open/Closed Principle 등 SOLID 원칙의 실전 적용을 포함합니다.
WELC ver. 2026 Part 3: 테스트 하네스에 코드 넣기
테스트가 전혀 없는 클래스와 메서드를 테스트 하네스에 넣는 기법들을 다룹니다. Hidden Dependency, Irritating Parameter, Global Dependency 등의 문제 상황별 해법과 Characterization Test 작성법을 JDK 25 코드로 보여줍니다.
WELC ver. 2026 Part 2: 안전한 코드 변경 패턴 — Sprout와 Wrap
레거시 코드에 기능을 추가할 때 가장 즉시 적용 가능한 4가지 패턴 — Sprout Method, Sprout Class, Wrap Method, Wrap Class — 를 JDK 25 기준의 modern Java 코드로 재현합니다.
WELC ver. 2026 Part 1: 레거시 코드의 정의와 변경의 역학
2004년 출판된 Michael Feathers의 명저를 2026년 현재 JDK 25 기준으로 재해석합니다. Part 1에서는 레거시 코드의 정의, 변경의 4가지 이유, Legacy Code Change Algorithm, 그리고 Seam Model을 다룹니다.
개발 팁: 읽기 쉽고 확장 가능한 if 구문 리팩토링 가이드
본 포스트는 개발자들이 보다 견고하고 적응력 있는 소프트웨어 시스템을 구축할 수 있도록 돕는 것을 목표로 합니다. 이를 위해, 단순한 구문 리팩토링에서부터 정교한 아키텍처 패턴에 이르기까지 if-else를 대체할 수 있는 다양한 해결책을 심도 있게 탐구합니다.
TotT: 인터페이스 테스트하기
부족함에 대한 지속적인 느낌을 억누르기 위해, 당신은 공학 분야의 진정한 통과 의례인 자신만의 행성 파괴 광선총을 만드는 데 시간을 들였습니다. 축하합니다. 그리고 당신은 매우 자랑스러워했지만, 그 다음 주말에 이워크 해설이 포함된 한정판 스타워즈 삼부작을 구매하여 데스스타가 알데라안을 파괴하는 것을 보고 잘못된 결정을 내렸다는 것을 깨달았습니다. 당신의 행성 파괴 광선총은 파란색 레이저를 가지고 있지만, 녹색 레이저가 훨씬 더 멋있어 보입니다. 하지만 라디오 셕에 가서 기존의 파괴 광선총에 끼울 수 있는 녹색 레이저를 사는 것은 간단한 문제가 아닙니다. 녹색 레이저를 가지려면 처음부터 다른 행성 파괴 광선총을 만들어야 할 것입니다. 두 개의 파괴 광선총을 소유하는 것이 하나보다 이웃들의 질투심을 더 자극할 것이므로 당신에게는 괜찮습니다.
TotT: “Static Cling” 퇴치하기
당신은 페어 프로그래밍을 하고 있고, 많은 뛰어난 사람들이 그렇듯이 소리 내어 말하고 있습니다. "목을 만들고, 주입하고, 테스트를 다시 실행할 거야. 통과해야 하는데… 젠장!" 당신의 파트너는 예외 "ConnectionFactory not initialized"를 발견합니다. "뭐?" 그녀는 말합니다. "뭔가가 데이터베이스를 사용하고 있어? 젠장, 이건 작은 테스트여야 했는데."