Flutter

Flutter 네이밍 관련된 주요 규칙

나하니인데 2024. 12. 4. 21:25
반응형

플러터에서 파일 및 클래스 네이밍 규칙은 프로젝트의 가독성, 유지보수성, 일관성을 높이는 데 매우 중요하다고 생각합니다.

네이밍과 관련된 주요 규칙등을 정리한 글입니다.

1. 일반적인 파일 네이밍 규칙

  • 파일 이름은 소문자와 밑줄(snake_case)을 사용합니다.
    • Flutter의 스타일 가이드에서 권장하는 방식입니다.
    • 예: login_screen.dart, custom_button.dart
  • 네이밍 기준: 파일의 역할에 따라 나눕니다.

1-1. 스크린 파일

  • 화면 단위의 파일은 _screen 접미사를 붙입니다.
    • 예: home_screen.dart, settings_screen.dart, profile_screen.dart

1-2. 위젯 파일

  • 독립적인 위젯은 _widget 접미사를 붙이거나 이름만 작성.
    • 예: custom_button.dart, profile_picture_widget.dart
    • 너무 길지 않다면 그냥 위젯 이름으로 작성: profile_picture.dart

1-3. 모델 파일

  • 데이터 모델은 주로 단수 형태로 작성합니다.
    • 예: user.dart, product.dart, order_item.dart

1-4. 유틸리티 파일

  • 헬퍼 함수나 공통 로직은 _utils 또는 _helper 접미사를 붙입니다.
    • 예: date_utils.dart, string_helper.dart

 

2.  클래스 네이밍

  • 클래스 이름은 대문자로 시작하며 UpperCamelCase를 사용합니다.
  • 클래스 이름은 파일 이름과 일치하도록 만듭니다.
    • 예: home_screen.dart → class HomeScreen.
    • 파일 이름과 클래스 이름을 일치시키면 탐색과 유지보수가 쉽습니다.

 

3.  네이밍 패턴 및 접미사

3-1. 위젯

  • 모든 위젯은 명확한 역할을 나타내는 이름을 가집니다.
    • 기본 위젯: Button, Card, Icon
      • 예: CustomButton, ProfileCard, IconWithText
    • 화면 위젯: _Screen
      • 예: HomeScreen, LoginScreen

3-2. 상태 관리 클래스

  • 상태 관리 클래스는 사용된 패턴을 나타내는 이름을 가집니다.
    • Provider 패턴: SomethingProvider
      • 예: AuthProvider, CartProvider
    • Cubit 패턴: SomethingCubit
      • 예: AuthCubit, CounterCubit
    • Bloc 패턴: SomethingBloc
      • 예: AuthBloc, OrderBloc

3-3. 비즈니스 로직 클래스

  • 비즈니스 로직과 관련된 클래스는 주로 Service 또는 Manager 접미사를 사용합니다.
    • 예: AuthService, DatabaseManager, NotificationService

3-4. 데이터 클래스

  • 데이터 모델은 단수형 이름을 사용합니다.
    • 예: User, Post, Product

 

4.  프로젝트 구조에서 네이밍 규칙

4-1. 디렉토리 구조

  • 디렉토리 이름도 **snake_case**를 사용합니다.
  • 주요 디렉토리 네이밍:
    • screens: 앱 화면 파일
    • widgets: 재사용 가능한 위젯
    • models: 데이터 모델
    • services: 비즈니스 로직 및 API 호출
    • utils: 유틸리티 및 헬퍼 함수
lib/
├── models/
│   ├── user.dart
│   └── product.dart
├── screens/
│   ├── home_screen.dart
│   ├── login_screen.dart
│   └── profile_screen.dart
├── widgets/
│   ├── custom_button.dart
│   └── profile_picture.dart
├── services/
│   ├── auth_service.dart
│   ├── database_service.dart
├── utils/
│   ├── date_utils.dart
│   └── string_helper.dart

 

5.  기타 네이밍 팁

5-1. 변수와 함수

  • 변수와 함수는 **lowerCamelCase**를 사용합니다.
    • 예: userName, fetchData(), onPressed.

5-2. 상수

  • 상수는 **UPPER_SNAKE_CASE**를 사용합니다.
    • 예: MAX_RETRIES, API_BASE_URL.

5-3. 키 값

  • Key를 사용하는 경우 클래스 이름을 반영합니다.
    • 예: const Key('home_screen_button').
반응형