본문 바로가기
모바일 APP/Flutter

코드 컨밴션 Code Convention (명명 규칙)

by 살길바라냐 2022. 3. 31.

flutter_lints 또는 lints를  최대한 사용해서 적용할 예정

2.0버전부터는 기본적으로 flutter_lints 포함되어 있으나 
커뮤니티에서는 lints가 인기가 많다고 함.

추가적인 설정은 analysis_options.yaml 파일에
https://ychcom.tistory.com/entry/%EB%A6%B0%ED%84%B0-%EB%A3%B0%EB%93%A4-Linter-rules  추가 해서 사용

 

린터 룰들 Linter rules

always_use_package_imports lib 디렉토리 안에 파일들에 상대경로를 못하게 하는 Error 룰 상대경로와 절대경로가 썩여 있으면 개발자끼리 혼란을 일으킬수 있어 절대 경로를 추천하는 룰임. 상대경로는

ychcom.tistory.com

 

명명 규칙 

 

Dart에서는 3가지 네이밍 규칙이 있다 .

1. UpperCamelCase : 단어별 첫글자는 대문자로 

2. lowerCamelCase : 첫단어를 제외하고, 단어별 첫글자는 대문자로, 약어도 동일하게 적용

3. lowercase_with_underscores :  다 소문자 단어별  사이에는 '_' 넣는다. 

 

UpperCamelCase

 

class , enunm type, typedef, type parameter 들 일 경우

class SliderMenu { ... }

class HttpRequest { ... }

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

 

metadata annotation 인 경우

class Foo {
  const Foo([Object? arg]);
}

@Foo(anArg)
class A { ... }

@Foo()
class B { ... }

 

만약 annotation 에 파라미터가 없으면 lowerCamelCase 명명

const foo = Foo();

@foo
class C { ... }

 

extensions 메서드의 타입들 

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

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

 

 

lowerCamelCase

 

대부분의 변수들 클래스 멤버, 상위 레벨 정의, 변수들, 파라미터 등등

var count = 3;

HttpRequest httpRequest;

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

 

상수 변수 

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

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

 

 

 lowercase_with_underscores

 

라이브러리, 패키지, 디렉토리, 소스파일 등

library peg_parser.source_scanner;

import 'file_system.dart';
import 'slider_menu.dart';

 

prefix를 사용한 import 

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

 

 

두가지 이상의 약어 또는 줄임말은 대문자로 표시 

 

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

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

 

 

사용하지 않는 callback parameter '_', '__' 로 표시 

 

만약 여러개의 사용하지 않는 callback parameter 쓸경우 
충돌을 피하기 위해 __, ___ 사용한다. 

private 아닌것은 '_ ' 사용하지 않기 

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

 

 

순서

 

1. "dart:" import는 다른 import 우선 배치

import 'dart:async';
import 'dart:html';

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

 

2. "package" import는 상대적 import 우선 배치

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

import 'util.dart';

 

3. 특별한 export는 모든 import 와 나누어서 배치

import 'src/error.dart';
import 'src/foo_bar.dart';

export 'src/error.dart';

 

4. 알파벳 순서별로 정렬

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

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

 

728x90
반응형

'모바일 APP > Flutter' 카테고리의 다른 글

린터 룰들 Linter rules  (0) 2022.03.31