본문으로 건너뛰기

coding-style

코딩 스타일

불변성 (매우 중요)

항상 새로운 객체를 생성하고, 절대 기존 객체를 변경(mutate)하지 마세요:

// 잘못됨: 변경(Mutation) 발생
function updateUser(user, name) {
user.name = name // 변경됨!
return user
}

// 올바름: 불변성(Immutability) 유지
function updateUser(user, name) {
return {
...user,
name
}
}

파일 구조화

소규모 파일 다수 > 대규모 파일 소수:

  • 높은 응집도, 낮은 결합도
  • 보통 200-400 라인, 최대 800 라인
  • 대형 컴포넌트에서 유틸리티 분리
  • 타입이 아닌 기능/도메인별로 정리

에러 처리

항상 에러를 포괄적으로 처리하세요:

try {
const result = await riskyOperation()
return result
} catch (error) {
console.error('작업 실패:', error)
throw new Error('사용자 친화적인 상세 메시지')
}

입력 유효성 검사

항상 사용자 입력을 검증하세요:

import { z } from 'zod'

const schema = z.object({
email: z.string().email(),
age: z.number().int().min(0).max(150)
})

const validated = schema.parse(input)

코드 품질 체크리스트

작업 완료 표시 전 확인 사항:

  • 코드가 읽기 쉽고 네이밍이 잘 되어 있는가
  • 함수가 작게 유지되는가 (<50 라인)
  • 파일이 집중된 역할을 하는가 (<800 라인)
  • 중첩이 너무 깊지 않은가 (>4 레벨)
  • 적절한 에러 처리가 되어 있는가
  • console.log 문이 없는가
  • 하드코딩된 값이 없는가
  • 변경(mutation)이 없는가 (불변 패턴 사용)