Skip to content

네이밍 시스템

네이밍 시스템은 클래스 이름을 단순한 시각 표현이 아닌, 구조와 역할을 전달하는 설계 기준으로 정의합니다.
네이밍은 개인의 취향이 아니라, 팀 전체가 공유하는 규칙이며, 코드 수준에서 구조를 드러내는 방법론입니다.


네이밍 시스템은 다음과 같은 목적을 가집니다.

  • 클래스 이름은 구조와 역할이 드러나도록 설계하는 것을 원칙으로 합니다.
  • CSS 충돌과 예측 불가능한 스타일 확산을 방지합니다.
  • 구조 중심 UI 설계를 코드 수준에서 명확히 드러냅니다.
  • 협업 환경에서도 동일한 해석이 가능하도록 합니다.
  • 중첩 구조에서도 소속 범위가 명확히 구분되도록 합니다.

네이밍은 다음 원칙을 따릅니다.

  • 클래스 이름은 어떻게 보이는지가 아니라 무엇인지를 표현합니다.
  • 직접적인 색상·수치 기반 표현은 지양합니다.
  • 구조와 관계가 이름에 드러나야 합니다.
  • 모든 네이밍은 일관된 규칙과 명확한 범위를 가집니다.

✅ 좋은 예 (구조 중심 네이밍)

<div class="card">
<div class="i_header"></div>
<div class="i_body"></div>
</div>

❌ 나쁜 예 (스타일 중심 네이밍)

<div class="blue_box big_text rounded shadow">
...
</div>

클래스의 역할과 소속 범위를 명확히 하기 위해 접두사(prefix) 기반 네이밍 체계를 사용합니다.

접두사는 단순 분류가 아니라, 구조적 스코프(scope)를 드러내는 장치입니다.

각 접두사의 의미·구조 범위·단독 사용 규칙은 접두사 기준표를 정본으로 삼습니다.
이 문서는 규칙 자체가 아니라, 왜 이런 접두사 체계를 선택했는가를 설명합니다.


컴포넌트는 왜 접두사를 쓰지 않는가

Section titled “컴포넌트는 왜 접두사를 쓰지 않는가”

레이아웃과 페이지는 범위(scope)를 명확히 하기 위해 접두사를 사용합니다.
반면 컴포넌트는 접두사 없이 의미 중심의 단일 이름으로 정의합니다.

  • 컴포넌트는 특정 위치가 아니라 어디서든 재사용되는 단위입니다.
  • 접두사는 소속 범위를 고정하므로, 재사용을 전제로 하는 컴포넌트에는 오히려 방해가 됩니다.
  • 이름 자체가 곧 컴포넌트의 정체이므로, 범위 표식 없이 의미만으로 충분합니다.

즉, 접두사의 유무는 범위가 고정된 구조인가, 재사용되는 구조인가를 구분하는 근거입니다.


기존에는 모든 내부 요소를 i_로 통일했습니다.
그러나 레이아웃·페이지·컴포넌트가 서로 중첩되는 구조에서 접두사가 동일하면, 어떤 블록에 속한 요소인지 해석이 모호해지는 문제가 발생했습니다.

이를 해소하기 위해 내부 요소 접두사를 블록 유형별로 i_ / p_ / l_로 분화했습니다.
접두사는 요소의 성격이 아니라 소속 범위를 기준으로 결정합니다.

중첩 구조 예시

<div class="layout_header">
<div class="l_inner">
<div class="card">
<div class="i_header"></div>
<div class="i_body"></div>
</div>
</div>
</div>

위 구조에서 레이아웃 블록과 컴포넌트 블록이 함께 사용되었습니다.
접두사를 구분함으로써 중첩 구조에서도 각 요소의 소속 범위를 즉시 해석할 수 있습니다.


시각적 표현 네이밍에 대한 기준

Section titled “시각적 표현 네이밍에 대한 기준”

시각적 표현을 직접 드러내는 네이밍을 기본적으로 지양합니다.

  • .red_button
  • .big_title

다만, 규칙화된 의미나 상태로 치환되는 경우에 한해 허용합니다.

  • .m_error
  • .m_size_large

즉, 시각 속성은 직접 표현하지 않고 의미·상태·규칙 체계 안에서 정의된 경우에만 허용합니다.


네이밍이 곧 구조를 의미합니다.

  • 이름이 모호하면 구조 설계가 불완전하다고 판단합니다.
  • 클래스 이름만 보고 구조를 예측할 수 있어야 합니다.
  • 문서 없이도 코드 자체로 구조를 설명할 수 있어야 합니다.

SLUR UX/UI System의 네이밍 시스템은 UI 구조 설계를 코드 수준에서 명확히 드러내기 위한 핵심 규칙입니다.