Effective Dart - Style

MJ·2023년 6월 1일
0

Identifiers

  • UpperCamelCase: 항상 식별자의 첫번째 문자는 대문자로 표기 해야 하며, 만약 여러 단어가 포함되어 있는 경우라면, 각 단어를 구분짓게 해주기 위해서 대문자로 표기해야 한다
  • lowerCamelCase: 항상 식별자의 첫번째 문자는 소문자로 표기해야 하며, 나머지는 UpperCamelCase와 동일
  • lowercase_with_undercase: 소문자만 사용하며 단어의 구분은 언더스코어를 사용

타입 유형에는 UpperCamelCase를 사용

  • classes, enum types, typedefs, type parameter 등에 사용 (separator 없이 사용한다)
class SliderMune { ... }
typedef Predicate<T> = bool Function(T value);
  • 메타 데이터 어노테이션에도 사용한다
class Foo {
	const Foo([Object? arg]);
}

@Foo(anArg)
calss A { ... }
  • 어노테이션 클래스가 생성자를 포함하고 있지 않으면 lowerCamelCase로 생성할 수 있다
const foo = Foo();

@foo
class C { ... }

이름에 두 단어 이상이 들어가는 경우 UpperCamelCase 사용

  • 각 단어의 첫 글자에 대문자를 사용해야 한다
extension MyNameList<T> on List<T> { ... }

var nameModel = "Manjee.official"

패키지, 폴더, 소스파일 이름에는 lowercase_with_underscores 사용

// Good case
my_pakage
 -> lib
  -> file_system.dart
  -> bottom_menu.dart

// Bad case
mypakage
 -> lib
  -> file-system.dart
  -> bottomMenu.dart

Import prefixes에는 lowercase_with_unserscores 사용

// Good case
import 'dart:math' as math;
import 'package:angular_components/angular_components.dart' as angular_components;
import 'package:js/js.dart' as js;

// Bad case
import 'dart:math' as Math;
import 'package:angular_components/angular_components.dart' as angularComponents;
import 'package:js/js.dart' as JS;

다른 식별자들은 lowerCamelCase 사용

  • 클래스 멤버, 메소드 명, 변수, 파라미터 등...
var githubId = "manjee";

HttpRequest httpRequest;

void align(bool clearItems) { ... }

상수 이름에는 lowerCamelCase를 쓰는 것이 좋다

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

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

SCREAMING_CAPS

  • SCREAMING_CAPS 형태 네이밍의 변수를 사용하고 있는 기존 코드나 라이브러리를 사용할 경우
  • Dart 코드를 Java 코드와 병행해서 개발할 경우

두 개의 단어를 합친 단어의 약어는 대문자로 표현한다

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

var uiHandler = ...

사용하지 않는 콜백 파라미터는 _, __을 사용하는 것이 좋다

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

private이 아닌 경우 식별자 앞에 _를 붙이지 말아야한다

  • Dart에서는 변수 등의 앞에 _을 붙임으로써 private을 표시한다

라이브러리 이름을 명시하지 않는다

  • 기술적으로는 가능하나 레거시임!
// Bad case
library my_library

// Good case
@TestOn('browser')
library;

Import 구문 순서

  • dart: 는 다른 import 보다 먼저 선언한다
  • package:dart: 다음에 import 한다
  • export 는 모든 import 다음에 선언한다
  • import 들은 기본적으로 알파벳 순으로 정렬한다
import 'dart:async';
import 'dart:html';

import 'package:bar/bar.dart';
import 'package:foo/foo.dart';

import 'foo.dart';
import 'foo/foo.dart';

export 'src/error.dart';

DartFormating

https://dart-ko.dev/tools/dart-format




출처 - https://dart-ko.dev/guides/language/effective-dart/style

profile
느긋하게 살자!

0개의 댓글