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
- 기본 위젯: Button, Card, Icon
3-2. 상태 관리 클래스
- 상태 관리 클래스는 사용된 패턴을 나타내는 이름을 가집니다.
- Provider 패턴: SomethingProvider
- 예: AuthProvider, CartProvider
- Cubit 패턴: SomethingCubit
- 예: AuthCubit, CounterCubit
- Bloc 패턴: SomethingBloc
- 예: AuthBloc, OrderBloc
- Provider 패턴: SomethingProvider
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').
반응형