이제 회사에서 Flutter를 하게 되었다. Dart언어를 짜는 고유 스타일을 좀 배워봐야할 것 같아서 이 글을 쓴다. 그러던 중 Effective Dart에 대해서 알게되었다.
형식이나 대소문자같은건 어느 것이 더 나은지에 대한 논쟁은 주관적이며 해결이 불가능하다.
그러니, 일관성이 객관적으로 도움이 된다!
Dart는 굉장히 친숙한 디자인으로 되어있다. C, Java, JS 또는 다른 언어들의 특징을 굉장히 많이 차용했다.
다트를 만든 이유는 각 언어마다 개선할 점들이 있기 때문이다.
코드의 레이아웃과 식별자 형식에 관한 규칙 제공!
주석 작성은 어떻게 할 것인지에 대한 지침.
Dart언어의 기능을 어떻게 효과적으로 사용할지에 대한 방법을 가르쳐줌
라이브러리 API 설계에 대한 권장사항을 제시한다.
DO - 100% 해라
DON`T - 100% 하지마라
PREFFER - 하는게 낫다
AVOID - 하지 않는 게 낫다
CONSIDER - 한 번 고려해봐
몇 개의 가이드라인에서는 예외도 적용이 되어있다.
Dart 린터가 이 룰에 대해서 가이드를 제시하기도 한다.
라이브러리 멤버
최상위 필드, 게터, 세터 또는 함수를 의미함. 기본적으로 타입이 아닌 최상위에 있는 모든 것을 말함.
클래스 멤버
클래스 내부에 선언된 생성자, 필드, 게터랑 세터, 함수, 오퍼레이터
멤버
라이브러리 멤버랑 클래스 멤버를 말함
변수
최상위 변수, 매개변수, 지역변수
정적 변수나 인스턴스 필드는 포함하지 않음.
타입
이름이 지정된 타입 선언. class, typedef, enum
프로퍼티
최상위 변수, 게터, 세터, 필드를 의미함.
각 페이지마다 세부적인 사항들을 제시해주지만, 뭔가 사용할 것 같지 않으니
요약을 제공해준다.
기본은 DO라고 생각하면 된다.
타입과 확장
패키지, 디렉터리, 소스 파일 이름, import접두사 이름
상수(PREFER)
그리고 그 외의 다른 식별자 이름들
약어나 두 글자보다 긴 약어.
사용되지 않는 콜백 매개변수의 이름(PREFER)
defaultTimeOut(O), kDefaultTimeOut(X)
library my_library; //X
@TestOn('browser')
library; //O
코드 포맷에는 dart format을 사용
모든 흐름 제어 문에 중괄호를 사용
포맷터에 더 적합하게 코드를 변경하는 것
80자보다 긴 줄
주석은 문장처럼 포맷하라.
첫 단어는 대소문자 구분이 필요한 식별자가 아닌 경우 대문자로 시작하라. 그리고 마침표로 끝나라.
멤버와 타입을 문서화하기 위해 ///doc주석을 사용하세요.
doc 주석은 한 문장 요약으로 시작할것
doc 주석의 첫 문장을 별도의 단락으로 분리하세요.
주변 컨텍스트와의 중복 피하세요
속성의 getter와 setter 모두에 대해 문서화 적용하는 것.
매개변수, 반환 값, 예외를 설명하기 위해 문장 사용
메타데이터 주석 앞에 doc주석을 배치.
공용 API에 대한 doc 주석 작성하기
함수랑 메소드 주석은 3인칭 동사로
부울이 아닌 변수나 속성 주석은 명사 구로 시작하는 것이 좋음.
부울 변수나 속성 주석은 "Whether"다음에 명사나 동명사 구로 시작하는것이 좋음.
라이브러리나 타입 주석은 명사 구로
라이브러리 수준의 doc 주석을 작성
비공개 API에 대한 doc 주석을 작성
마크다운 너무 쓰지마.
간결하게 작성하자.
약어와 두문자어를 사용하지 않는 것이 좋음. 그러나 분명한 경우는 제외.
--- 정리하다보니 이후에 사용하면서 업데이트 할 예정 ---