본문 바로가기
카테고리 없음

클린 코드 작성법: 실전 팁 모음 (가독성, 네이밍, 리팩토링)

by yrahealingtime 2025. 4. 25.

클린 코드 작성법: 실전 팁 모음 (가독성, 네이밍, 리팩토링)
클린 코드 작성법: 실전 팁 모음 (가독성, 네이밍, 리팩토링)

 

많은 개발자들이 "작동하는 코드"를 목표로 삼지만, 진짜 실력자는 "읽기 쉬운 코드"를 만드는 데 집중합니다. 이것이 바로 클린 코드의 핵심입니다. 클린 코드는 협업을 원활하게 만들고, 유지보수를 쉽게 하며, 프로젝트의 수명을 늘려줍니다. 이 글에서는 실무에서 자주 사용하는 클린 코드 작성법을 중심으로, 가독성을 높이는 네이밍 전략, 함수 구조, 주석 사용법, 리팩토링 팁까지 실전 중심으로 안내해 드립니다.

 

클린 코드란 무엇인가?

“클린 코드란 읽는 사람이 최소한의 노력으로 코드를 이해할 수 있도록 하는 코드다.” 이는 로버트 C. 마틴(‘클린 코드’ 저자)의 유명한 정의입니다. 결국 코드는 ‘기계가 이해하는 언어’이기도 하지만, 더 중요한 것은 사람이 읽는 언어라는 점입니다. 대부분의 시간은 코드를 ‘작성’하는 것이 아니라 ‘읽고, 이해하고, 수정하는 데’ 쓰이기 때문이죠.

클린 코드는 단순히 예쁘고 정돈된 코드가 아니라, 의도가 명확하며, 추측 없이 이해 가능한 코드입니다. 아래는 클린 코드가 갖춰야 할 핵심 요소들입니다:

  • 가독성 (Readability): 코드를 처음 보는 사람도 쉽게 이해할 수 있어야 함
  • 일관성 (Consistency): 네이밍, 들여쓰기, 패턴 등이 통일되어야 함
  • 단순성 (Simplicity): 불필요한 복잡성이 제거된 구조
  • 테스트 용이성 (Testability): 테스트하기 쉬운 구조로 분리된 모듈
  • 유지보수성 (Maintainability): 시간이 지나도 쉽게 고칠 수 있는 코드

예시:

// ❌ 나쁜 예시
function a(x) {
  let y = 0;
  for(let i = 0; i < x.length; i++) {
    if(x[i] > 0) {
      y += x[i];
    }
  }
  return y;
}

// ✅ 좋은 예시
function sumPositiveNumbers(numbers) {
  let sum = 0;
  for (let number of numbers) {
    if (number > 0) {
      sum += number;
    }
  }
  return sum;
}

두 번째 예시는 함수명, 변수명, 반복문 구조까지 한눈에 이해할 수 있게 개선되어 있습니다. 이처럼 클린 코드는 다른 사람(또는 미래의 나)을 위한 배려입니다.

 

네이밍, 함수 구조, 주석 – 핵심 가이드

클린 코드의 출발은 좋은 이름에서 시작됩니다. 변수, 함수, 클래스 이름만 잘 지어도 코드의 70%는 읽기 쉬워집니다.

1. 네이밍의 기본 원칙

  • 의미 있는 이름 사용: x, y보다는 userList, totalPrice
  • 함수는 동사형: calculateSum(), fetchData()
  • 불리언 변수는 질문형: isEmpty, hasPermission
  • 일관된 스타일 유지: camelCase, snake_case 등 혼용 금지
# ❌ 잘못된 예시
def fn(p):
    return p * 0.08

# ✅ 개선된 예시
def calculate_vat(price):
    return price * 0.08

2. 함수는 하나의 역할만 하도록

  • 작고 명확한 하나의 목적만 수행
  • 조건문, 반복문이 많다면 분리 고려
  • 함수는 10~20줄 이내 유지 권장
function createUser(name, email, password) {
  validateEmail(email);
  const hashedPassword = hashPassword(password);
  const user = { name, email, hashedPassword };
  saveUserToDatabase(user);
  return user;
}

3. 주석은 "왜"만 설명하라

클린 코드는 주석이 필요 없는 코드입니다. 함수와 변수 이름이 명확하면 주석은 자연스럽게 줄어듭니다.

// ❌ 나쁜 예시
// 변수 x에 1을 더한다
x = x + 1;

// ✅ 좋은 주석
// 로그인 실패 횟수를 저장하여 계정 잠금을 유도
increaseFailedLoginAttempts(userId);

 

실무에서 바로 쓰는 리팩토링 팁

리팩토링은 기능은 그대로 두되, 코드를 더 읽기 좋게 만드는 작업입니다. 코드를 작성하고 나면 스스로 아래와 같은 질문을 던져보세요:

  • 이 함수는 너무 길지 않은가?
  • 이 이름은 명확한가?
  • 중복된 코드는 없는가?
  • 더 단순하게 표현할 수 없을까?

실무 리팩토링 패턴 예시

  • 함수 추출: 복잡한 로직을 별도 함수로 분리
  • 조건문 단순화: 중첩 if → 조기 반환(return early)
  • 매직 넘버 제거: 의미 있는 상수 사용
  • 중복 제거: 반복 로직은 공통 함수화
// ❌ 기존 코드
if (user.age > 18 && user.isVerified && user.hasPermission) {
  // 실행
}

// ✅ 리팩토링 후
function isEligibleUser(user) {
  return user.age > 18 && user.isVerified && user.hasPermission;
}

if (isEligibleUser(user)) {
  // 실행
}

결론: 코드에도 ‘예의’가 있다

클린 코드는 단순히 보기 좋은 코드가 아닙니다. 협업을 위한 최소한의 예의이자, 미래의 나에게 보내는 편지입니다.

당장은 시간이 더 걸리는 것 같아도, 클린 코드를 작성하는 습관은 프로젝트의 품질과 지속가능성에 큰 영향을 줍니다.

  • 코드 한 줄을 더 쓰기 전에, “이건 읽기 쉬울까?”
  • 함수 하나를 만들기 전에, “이건 정말 하나의 일만 하는가?”
  • 주석 하나를 달기 전에, “코드 자체가 설명이 되는가?”

이러한 질문을 던질 수 있다면, 당신은 이미 클린 코드에 가까워지고 있는 중입니다. 오늘부터라도, 코드를 '작동'하게 만들기보다는 '읽히게' 만드는 연습을 해보세요. 그것이 바로 더 좋은 개발자가 되는 첫걸음입니다.