6-keem
Gallery
About
© Powered by 6-keem

Flutter Code Convention

캡스톤디자인
2025년 02월 05일
4분

Code Convention

Series bookmark
  1. SpringBoot Code Convention
  2. Flutter Code Convention
  3. Flutter Architecture Guide
On this page
  • 1. 식별자 (Identifiers)
  • 1.1. UpperCamelCase
  • 1.2. lowerCamelCase
  • 1.3. lowercase_with_underscores
  • 1.4. 약어와 두문어 처리
  • 2. 순서 (Ordering)
  • 2.1. 임포트 순서
  • 2.2. Export 순서
  • 3. 포맷팅 (Formatting)
  • 3.1. 자동 포맷터 사용
  • 3.2. 한 줄 120자 제한
  • 3.3. 중괄호 사용

이전 포스트
SpringBoot Code Convention
다음 포스트
Flutter Architecture Guide
thumbnail.png
Flutter Code Convention for 2025. Capstone Design

공식문서를 참고하여 작성 하였습니다.

1. 식별자 (Identifiers)

Dart에서는 식별자를 세 가지 방식으로 사용합니다.

1.1. UpperCamelCase

  • 설명: 각 단어의 첫 글자를 대문자로 작성합니다.
  • 용도: 클래스, enum, typedef, 타입 매개변수 등
  • 예시 (Good):
class SliderMenu { ... }
 
class HttpRequest { ... }
 
typedef Predicate<T> = bool Function(T value);
class Foo {
  const Foo([Object? arg]);
}
 
@Foo(anArg)
class A { ... }
 
@Foo()
class B { ... }

1.2. lowerCamelCase

  • 설명: 첫 단어는 소문자, 이후 단어는 첫 글자만 대문자로 작성합니다.
  • 용도: 메서드명, 변수명, 상수 (상수도 lowerCamelCase를 선호)
  • 예시 (Good) :
var count = 3;
 
HttpRequest httpRequest;
 
void align(bool clearItems) {
    ...
}
 
const pi = 3.14;
const defaultTimeout = 1000;

1.3. lowercase_with_underscores

  • 설명: 모든 글자를 소문자로 작성하고, 단어 사이에 언더스코어(_)를 사용합니다.
  • 용도: 패키지, 디렉토리, 파일명, import 접두어
  • 예시 (Good):
// 파일 구조 예시
my_package/
└─ lib/
   ├─ file_system.dart
   └─ slider_menu.dart
 
// Import 접두어 예시
import 'dart:math' as math;
  • 예시 (Bad):
// 파일명에 대문자나 하이픈 사용 (Bad)
mypackage/
└─ lib/
   ├─ file-system.dart
   └─ SliderMenu.dart

1.4. 약어와 두문어 처리

  • 긴 약어 (2글자 이상): 일반 단어처럼 취급하여 첫 글자를 대문자로 작성
    예: Http (Hypertext Transfer Protocol), Nasa (National Aeronautics and Space Administration)
  • 두 글자 약어: 영어에서 모두 대문자로 쓰이면 그대로 사용
    예: ID, TV
  • lowerCamelCase에서 약어가 앞에 올 경우: 모두 소문자로 작성
    예:
var httpConnection = connect();
var tvSet = Television();

2. 순서 (Ordering)

2.1. 임포트 순서

규칙:

  1. dart: 임포트
  2. package: 임포트
  3. 상대 경로 임포트

예시 (Good):

import 'dart:async';
import 'dart:collection';
 
import 'package:bar/bar.dart';
import 'package:foo/foo.dart';
 
import 'util.dart';
  • 예시 (Bad):
import 'package:foo/foo.dart';
import 'dart:async';
 
import 'util.dart';
import 'package:bar/bar.dart';

2.2. Export 순서

  • 규칙: 임포트 이후 별도의 섹션에 배치하며, 각 섹션은 빈 줄로 구분합니다.
  • 예시 (Good):
import 'src/error.dart';
import 'src/foo_bar.dart';
 
export 'src/error.dart';
  • 예시 (Bad):
import 'src/error.dart';
export 'src/error.dart';
import 'src/foo_bar.dart';

3. 포맷팅 (Formatting)

3.1. 자동 포맷터 사용

  • 설명: dart format 명령어를 사용하면 일관된 포맷팅을 유지할 수 있습니다.
  • 예시
dart format .

3.2. 한 줄 120자 제한

  • 설명: 가독성을 위해 한 줄의 길이를 120자로 제한합니다. (특별한 경우 제외)
  • 주의: 긴 URI, 파일 경로, 또는 멀티라인 문자열은 예외가 될 수 있습니다.

3.3. 중괄호 사용

  • 설명: 모든 제어문(조건문, 반복문 등)에서 중괄호를 사용합니다.
  • 예시 (Good):
if (isWeekDay) {
  print('Bike to work!');
} else {
  print('Go dancing or read a book!');
}
  • 예시 (예외): else가 없는 간단한 if 문은 한 줄로 작성할 수 있습니다
if (arg == null) return defaultValue;
  • 예시 (Bad):
if (overflowChars != other.overflowChars)
  return overflowChars < other.overflowChars;