클린 코드 정리Java2025. 2. 27. 14:16
Table of Contents
반응형
클린 코드(Clean Code)란 읽기 쉽고, 유지보수가 쉬우며, 효율적인 소프트웨어 코드를 의미합니다. 로버트 C. 마틴(일명 "아저씨" 또는 "Uncle Bob")이 저서 Clean Code에서 강조한 원칙과 기법을 정리하면 다음과 같습니다.
1️⃣ 좋은 코드의 특징
✔ 가독성(Readability) – 누구나 쉽게 이해할 수 있어야 한다.
✔ 간결성(Simplicity) – 불필요한 요소가 없고, 최소한의 코드로 표현된다.
✔ 명확성(Clarity) – 코드가 하는 일을 직관적으로 이해할 수 있어야 한다.
✔ 재사용성(Reusability) – 중복을 줄이고, 모듈화를 통해 재사용 가능해야 한다.
✔ 테스트 가능성(Testability) – 단위 테스트가 쉽게 작성될 수 있어야 한다.
2️⃣ 클린 코드 작성 원칙
🔹 1. 의미 있는 이름 사용
- 변수, 함수, 클래스 이름을 의미 있게 짓는다.
- a, b, c 같은 애매한 이름 대신 의도가 분명한 이름 사용.
- 예시 ❌:
int d; // 이게 뭘 의미하는지 모름
- 예시 ✅:
int elapsedTimeInDays; // 경과 시간(일 단위)
🔹 2. 함수는 작고, 하나의 역할만 수행해야 함
- 하나의 함수는 하나의 작업만 수행해야 한다.
- 예시 ❌ (여러 작업을 한 함수에서 수행)
void processOrder() { validateOrder(); saveToDatabase(); sendEmailNotification(); }
- 예시 ✅ (각 작업을 분리)
void validateOrder() { ... } void saveToDatabase() { ... } void sendEmailNotification() { ... }
🔹 3. 주석을 남발하지 말 것
- 좋은 코드 자체가 주석 없이도 이해 가능해야 한다.
- 불필요한 주석보다는 명확한 코드 작성이 우선이다.
- 예시 ❌ (불필요한 주석)
// 나이를 증가시킨다 age = age + 1;
- 예시 ✅ (명확한 변수명 사용)
increaseUserAge();
🔹 4. 들여쓰기와 코드 구조를 명확하게 유지
- 한 함수의 들여쓰기 깊이는 2~3단계를 넘지 않는 것이 좋다.
- 너무 깊은 중첩(Nested Structure)은 가독성을 해친다.
- 예시 ❌ (깊은 중첩)
if (user != null) { if (user.isActive()) { if (user.hasPermission()) { doSomething(); } } }
- 예시 ✅ (조기 종료 사용)
if (user == null) return; if (!user.isActive()) return; if (!user.hasPermission()) return; doSomething();
🔹 5. 중복 코드 제거 (DRY - Don't Repeat Yourself)
- 동일한 코드가 여러 번 반복되지 않도록 함수화 또는 재사용 가능한 모듈로 분리.
- 예시 ❌ (중복된 코드)
int calculateDiscountedPrice(int price) { return price - (price * 10 / 100); } int calculateFinalPrice(int price) { return price - (price * 10 / 100); }
- 예시 ✅ (중복 제거)
int applyDiscount(int price, int discountRate) { return price - (price * discountRate / 100); }
3️⃣ SOLID 원칙
객체 지향 프로그래밍(OOP)에서 클린 코드를 위한 5가지 핵심 원칙
- 단일 책임 원칙(SRP) – 하나의 클래스는 하나의 역할만 수행해야 한다.
- 개방-폐쇄 원칙(OCP) – 기존 코드를 수정하지 않고 확장 가능해야 한다.
- 리스코프 치환 원칙(LSP) – 하위 클래스는 부모 클래스를 대체할 수 있어야 한다.
- 인터페이스 분리 원칙(ISP) – 인터페이스는 최소한의 기능만 제공해야 한다.
- 의존성 역전 원칙(DIP) – 구현이 아닌 추상화(인터페이스)에 의존해야 한다.
4️⃣ 테스트 코드 작성 (TDD: Test-Driven Development)
- 테스트 가능성이 높은 코드는 클린 코드의 중요한 요소!
- 테스트 코드 예시 (JUnit)
@Test public void testCalculateDiscount() { assertEquals(90, applyDiscount(100, 10)); }
✅ 결론
클린 코드는 단순히 보기 좋은 코드가 아니라 유지보수성, 확장성, 가독성이 뛰어난 코드입니다.
- 가독성 높은 코드가 최고의 문서!
- 작은 함수, 명확한 이름을 사용하자.
- 불필요한 주석 대신 코드 자체가 설명되도록 작성하자.
- SOLID 원칙과 중복 제거를 신경 쓰자.
- 테스트 코드 작성 습관을 들이자.
📚 추가로 읽으면 좋은 자료:
- 로버트 C. 마틴, Clean Code: A Handbook of Agile Software Craftsmanship
- 켄트 벡, Test-Driven Development by Example
반응형
@위피M :: ChatGPT로 여는 새로운 세상!!
ChatGPT, 블록체인, 자바, 맥북, 인터넷, 컴퓨터 정보를 공유합니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!