Page cover image

코딩 컨벤션

Effective Dart: Style

좋은 코드의 중요한 부분 중 하나로, 일관된 명명, 순서 및 형식은 코드가 통일되어 보이도록 도와줍니다. Dart에서 일관된 스타일을 사용하면 서로의 코드를 이해하기 쉬워집니다.

식별자

UpperCamelCase

각 단어의 첫 글자를 대문자로 표기합니다.

유형 이름 표기

class SliderMenu { ... }

class HttpRequest { ... }

typedef Predicate<T> = bool Function(T value);

클래스, 열거형 유형, typedef 및 유형 매개변수는 각 단어의 첫 글자를 대문자로 표기하고 구분자를 사용하지 않아야 합니다.

확장(extension) 이름 표기

extension MyFancyList<T> on List<T> { ... }

extension SmartIterable<T> on Iterable<T> { ... }

확장(extension) 또한 각 단어의 첫 글자를 대문자로 표기하고 구분자를 사용하지 않아야 합니다.

lowercase_with_underscores

모든 문자를 소문자로 표기하며, 밑줄(_)로 단어를 구분합니다.

디렉토리 및 소스 파일 이름 표기

my_package
└─ lib
   └─ file_system.dart
   └─ slider_menu.dart

파일 이름 및 패키지 이름은 lowercase_with_underscores 방식을 사용해야 합니다.

import 접두사(prefixes) 표기

import 'dart:math' as math;
import 'package:angular_components/angular_components.dart' as angular_components;

import 문의 접두사(prefix)는 lowercase_with_underscores 방식을 사용해야 합니다.

lowerCamelCase

첫 글자를 제외한 각 단어의 첫 글자를 대문자로 표기하며, 첫 번째 단어는 항상 소문자로 표기합니다.

var count = 3;

HttpRequest httpRequest;

void align(bool clearItems) {
  // ...
}

클래스 멤버, 최상위 정의, 변수, 매개변수 및 명명된 매개변수는 첫 번째 단어를 제외한 각 단어의 첫 글자를 대문자로 표기하고 구분자를 사용하지 않아야 합니다.

  • 상수를 표현할 때: SCREAMING_CAPS 방식의 표기가 가능하나, 가능한 경우 lowerCamelCase를 사용하는 것이 좋습니다.

상수 이름

const pi = 3.14;
const defaultTimeout = 1000;
final urlScheme = RegExp('^([a-z]+):');

class Dice {
  static final numberGenerator = Random();
}

SCREAMING_CAPS 방식의 표기가 가능하나, 가능한 경우 상수 변수, 열거형 값 포함해 상수 이름에는lowerCamelCase를 사용하는 것이 좋습니다.

두 글자 이상인 약어 및 머리글자

class HttpConnection {}
class DBIOPort {}
class TVVcr {}
class MrRogers {}

var httpRequest = ...
var uiHandler = ...
var userId = ...
Id id;

두 글자 이상의 약어는 단어처럼 대문자로 표기해야 하며, 머리글자(첫 글자) 또한 대문자로 표기해야 합니다.

사용되지 않는 콜백 매개변수

futureOfVoid.then((_) {
  print('Operation complete.');
});

콜백 함수의 형식에 따라 매개변수가 필요하지만 구현에서 사용되지 않는 경우, 사용되지 않는 매개변수는 _로 명명하는 것이 관용적입니다. 여러 개의 사용되지 않는 매개변수가 있는 경우, 이름 충돌을 피하기 위해 추가적인 밑줄을 사용할 수 있습니다.

비공개(private) 식별자가 아닌 경우

로컬 변수, 매개변수, 로컬 함수 또는 라이브러리 접두사에 선행 밑줄을 사용하지 않아야 합니다.

라이브러리 이름

라이브러리 지시문에 이름을 추가하는 것은 레거시 기능이며 권장되지 않으며, 이름을 명시적으로 지정하지 않는 것을 선호합니다.

지시문 순서

지시문의 순서에는 정해진 규칙이 있으며, dart: import가 다른 import 앞에 위치해야 합니다. package: import는 상대적인 import 앞에 위치해야 하며, exportimport 다음에 따로 표기되어야 합니다.

코드 형식 지키기

코드 형식은 보기에 도움이 되며, 코드 가독성을 향상시키기 위해 dart format을 사용하는 것이 좋습니다.

80자 이상의 줄을 피하기

80자 이상의 줄은 일반적으로 가독성을 저하시킬 수 있으므로 피하는 것이 좋습니다. 단, 주석이나 문자열 내에서 URI 또는 파일 경로가 나타나는 경우에는 예외가 될 수 있습니다.

모든 제어문

모든 제어문에 중괄호를 사용하여 "떨어지는 else" 문제를 방지하는 것이 좋습니다.

이러한 가이드라인을 따르면 코드를 더 읽기 쉽게 만들 수 있고, Dart 프로젝트 전체에서 일관된 스타일을 유지할 수 있습니다.

Last updated