포맷팅
포맷팅은 주관적입니다. 여기서 언급하는 많은 규칙과 마찬가지로 반드시 따라야 할 엄격한 기준은 없습니다. 핵심은 포맷팅을 두고 논쟁하지 않는 것입니다. 다양한 자동화 도구를 사용하세요. 포맷팅 논의로 엔지니어의 시간과 비용을 낭비하는 것은 자원 낭비입니다.
자동 포맷팅 범위에 포함되지 않는 요소(들여쓰기, 탭 대 공백, 작은따옴표 vs 큰따옴표 등)에 대한 가이드는 본 문서를 참조하세요.
대소문자 규칙 일관성 유지
JavaScript는 타입이 없는 언어이므로 변수/함수의 대소문자 규칙이 중요한 의미를 전달합니다. 이러한 규칙은 주관적이므로 팀 단위로 결정할 수 있으나, 일관성 있는 적용이 가장 중요합니다.
나쁜 사례:
javascript
const DAYS_IN_WEEK = 7;
const daysInMonth = 30;
const songs = ["Back In Black", "Stairway to Heaven", "Hey Jude"];
const Artists = ["ACDC", "Led Zeppelin", "The Beatles"];
function eraseDatabase() {}
function restore_database() {}
class animal {}
class Alpaca {}좋은 사례:
javascript
const DAYS_IN_WEEK = 7;
const DAYS_IN_MONTH = 30;
const SONGS = ["Back In Black", "Stairway to Heaven", "Hey Jude"];
const ARTISTS = ["ACDC", "Led Zeppelin", "The Beatles"];
function eraseDatabase() {}
function restoreDatabase() {}
class Animal {}
class Alpaca {}함수 호출자와 피호출자는 인접하게 배치해야 함
함수 A가 다른 함수 B를 호출할 경우, 두 함수를 소스 파일 내에서 수직적으로 가깝게 배치해야 합니다. 이상적으로는 호출자를 피호출자 바로 위에 위치시키세요. 신문 읽듯이 위에서 아래로 코드를 읽는 일반적인 습관에 맞춰 구성하면 코드 가독성이 개선됩니다.
나쁜 사례:
javascript
class PerformanceReview {
constructor(employee) {
this.employee = employee;
}
lookupPeers() {
return db.lookup(this.employee, "peers");
}
lookupManager() {
return db.lookup(this.employee, "manager");
}
getPeerReviews() {
const peers = this.lookupPeers();
// ...
}
perfReview() {
this.getPeerReviews();
this.getManagerReview();
this.getSelfReview();
}
getManagerReview() {
const manager = this.lookupManager();
}
getSelfReview() {
// ...
}
}
const review = new PerformanceReview(employee);
review.perfReview();좋은 사례:
javascript
class PerformanceReview {
constructor(employee) {
this.employee = employee;
}
perfReview() {
this.getPeerReviews();
this.getManagerReview();
this.getSelfReview();
}
getPeerReviews() {
const peers = this.lookupPeers();
// ...
}
lookupPeers() {
return db.lookup(this.employee, "peers");
}
getManagerReview() {
const manager = this.lookupManager();
}
lookupManager() {
return db.lookup(this.employee, "manager");
}
getSelfReview() {
// ...
}
}
const review = new PerformanceReview(employee);
review.perfReview();