-
Notifications
You must be signed in to change notification settings - Fork 3
Rule
Git
feature/[Issue number]-[Task name]
ex) feature/1-init-project, feature/2-build-gradle-script-write
fix/[Issue number]-[Task name]
ex) fix/1-init-project, fix/2-build-gradle-script-write
[name]/[milestone title]/[feature branch name]
ex) 금교중/Login/feature/1-init-project
[Issue number]-[Issue title] / [실제 작업 내용]
ex) 2-컴포넌트 UI 구현하기 / password input 생성
-
Title
[TASK] 세부작업 내용
ex) [TASK] Login Form 구현하기
-
Body
Assignee : [이름]
Task Category : [해당 milestone 이름]
Task Description : [작업 상세 내용]
Date : [작업일]
Estimated Time : [예상 소요 시간, 단위 h]
Consumed Time : [실제 소요 시간, 단위 h]
- Labeling Rule
- Branch :
Feature
- Estimated time :
E : 2h
- Consumed time :
C : 1h
- Page :
Main Page
(only client) - Controller :
Sign up
(only server) - Priority :
Priority : Low
|Priority : Medium
|Priority : High
- Main tech :
Express
|React
|MySQL
- Refactoring :
Refactoring
- Branch :
들여쓰기 | 연산자 | 괄호
들여쓰기 시 1번의 탭으로 입력하기.
// 좋은 예
function test() {
console.log('들여쓰기 테스트');
}
// 나쁜 예
function test() {
console.log('들여쓰기 테스트');
}
두 개의 피연산자와 함께 사용하는 연산자는 사용 시 연산자 앞 뒤에 공백을 한 칸씩 추가하기.
(주의, 단항 연산자는 붙여서 사용)
// 좋은 예
var isSuccess = (condition <= 10);
var i;
for (i = 0; i < 10; i++) {
work();
}
// 나쁜 예
var isSuccess = (condition<=10);
var i;
for (i=0; i<10; i++) {
work();
}
할당 연산자 사용시 할당 값이 비교 연산식이면 괄호로 감싸주기.
// 좋은 예
var isBaby = (age < 10);
// 나쁜 예
var isBaby = age < 10;
동등 비교를 할 때 무조건 ==, != 대신 ===, !==를 사용하기.
// 좋은 예
console.log('1' === 1);
// 나쁜 예
console.log('1' == 1);
여는 괄호 다음과, 닫는 괄호 이전에 공백 주지 않기.
// 좋은 예
var isBaby = (age <= 10);
// 좋은 예
var i;
for (i = 0; i < 10; i++) {
work(hour, amount);
}
// 나쁜 예: 앞 뒤에 불필요한 공백 들어감
var isBaby = ( age <= 10 );
// 나쁜 예: 인자 사이에 불필요한 일 들어감
var i;
for (i = 0; i < 10; i++) {
work( hour, amount );
}
주석 | 기본 리터럴 | 객체 리터럴
- 하단의 코드를 설명하기 위해 독립된 줄에 주석 작성
- 주석 앞의 코드를 설명하기 위해 줄 끝에 주석 작성
- 여러 줄에 걸친 설명일 때는 사용하지 않기.
- 독립된 줄에 한 줄 주석 작성 시에는 설명할 코드와 같은 단계 들여쓰기 사용하며, 이전 줄은 한 줄 비우기.
// 좋은 예
if (age > 20) {
// 이 줄은 나이가 20살 이상일 때만 실행됩니다.
showAdultMovie();
}
// 나쁜 예: 이전 줄에 공백이 없어 가독성이 떨어짐
if (age > 20) {
// 이 줄은 나이가 20살 이상일 때만 실행됩니다.
showAdultMovie();
}
// 나쁜 예: 주석의 들여쓰기가 설명할 주석과 단계가 다릅니다.
if (age > 20) {
// 이 줄은 나이가 20살 이상일 때만 실행됩니다.
showAdultMovie();
}
// 나쁜 예: 한 줄 주석은 한 줄만 사용합시다.
// 이 코드는 만으로 나이가 20세 이상인 것이 아니고
// 그냥 20세 이상 아니아니 이게 아니고
// 아 아닙니다 만으로 나이가 20세 이상인
// 사람을 판별하기 위한 조건문입니다.
if (age > 20) {
// 이 줄은 나이가 20살 이상일 때만 실행됩니다.
showAdultMovie();
}
- 첫 번째 줄은 여러 줄 주석을 여는 방법인 /*를 삽입하며, 다른 텍스트는 넣지 않기.
- 그 다음 줄 부터는 *와 텍스트를 입력하는데 첫 째 줄의 *과 열을 맞춘다. *과 텍스트 사이에는 공백 하나를 넣어주기.
- 마지막 줄은 여러 줄 주석을 닫는 방법인 */를 삽입하며 다른 텍스트는 넣지 않기.
// 좋은 예
if (age > 20) {
/*
* 이 코드는 만으로 나이가 20세 이상인 것이 아니고
* 그냥 20세 이상 아니아니 이게 아니고
* 아 아닙니다 만으로 나이가 20세 이상인
* 사람을 판별하기 위한 조건문입니다.
*/
showAdultMovie();
}
// 나쁜 예: 이전 줄에 공백이 없어 가독성이 떨어짐
if (age > 20) {
/*
* 이 코드는 만으로 나이가 20세 이상인 것이 아니고
* 그냥 20세 이상 아니아니 이게 아니고
* 아 아닙니다 만으로 나이가 20세 이상인
* 사람을 판별하기 위한 조건문입니다.
*/
showAdultMovie();
}
// 나쁜 예: *과 텍스트 사이에 공백이 없음
if (age > 20) {
/*
*이 코드는 만으로 나이가 20세 이상인 것이 아니고
*그냥 20세 이상 아니아니 이게 아니고
*아 아닙니다 만으로 나이가 20세 이상인
*사람을 판별하기 위한 조건문입니다.
*/
showAdultMovie();
}
어노테이션은 코드에 추가적인 설명을 더한다. 한 단어이며 그 뒤에 콜론이 붙이기.
- TODO : 코드를 다 작성하지 않음. 다음에 작성할 내용이 반드시 기술되어 있어야 한다.
- HACK : 어거지(임시변통)으로 해결한 코드. 핵을 왜 사용했는지 정보가 있어야하며, 더 나은 방법으로 해결할 수 있음을 뜻한다.
- XXX : 코드에 문제가 있어 가능한 빨리 수정되야 함을 의미.
- FIXME : 코드에 문제가 있어 수정해야하지만 XXX보다는 덜 중요하다.
- REVIEW : 변경 가능성이 있거나 더 나은 방법이 있을 수 있음으로 리뷰가 필요한 코드를 의미.
- 문자열은 무조건 큰 따옴표로 묶습니다. 문자열을 \로 끊어 여러줄로 적지 않기.
- 숫자는 10진수 정수, 지수표현법을 이용한 정수, 16진수 정수, 부동 소수점을 이용한 정수만 사용하며, 소수점 앞 뒤에는 숫자가 최소 하나는 있어야 한다. 8진수는 사용하지 않기.
// 좋은 예
var name = "황혁진";
// 나쁜 예
var name = '황혁진';
// 나쁜 예: 문자열이 다음으로 넘어감
var story = "옛날 옛날에 어느 마을에 어떤 집에 \
어떤 사람과 어떤 사람이 살았어요.";
// 좋은 예
var num = 10;
var num = 10.0;
var num = 10.00;
var num = 0xB2;
var num = 3e1;
// 나쁜 예
var num = 10.; // 소수점 뒤에 숫자 없음
var num = .1; // 소수점 앞에 숫자 없음
var num = 010; // 8진수 사용 안함
- 여는 중괄호는 중괄호를 여는 문장과 같은 라인에 있어야 한다.
- 프로퍼티 - 값 쌍은 여는 중괄호 다음 줄 부터 작성하고 여는 중괄호가 있는 라인을 기준으로 한단계 들여쓰기.
- '프로퍼티: 값' 의 형식을 지켜줍니다. 공백없이 콜론을 입력하고 공백 하나 후에 값을 입력.
- 값이 함수라면 프로퍼티명 다음에 한줄로 입력하지 않고 함수 이전 줄, 다음 줄에 공백을 넣어주기.
- 관련된 프로퍼티끼리 묶기 위해 프로퍼티간 공백을 넣어도 됩니다.
- 닫는 중괄호는 텍스트와 함께 두지 않으며 끝에 세미콜론(;)을 붙여줍니다.
// 좋은 예
var person = {
name: "송민재",
age: 26,
getName: function() {
return this.name;
}
};
// 나쁜 예: 함수 이전에 공백이 없음
var person = {
name: "송민재",
age: 26,
getName: function() {
return this.name;
}
};
// 나쁜 예: 잘못된 들여쓰기
var person = {
name: "송민재",
age: 26,
getName: function() {
return this.name;
}
};
// 나쁜 예
var person = {name: "송민재", age: 26};
함수에 객체 리터럴을 전달할 때도 간단한 객체는 한 줄로 전달하고 싶겠지만, 가독성을 위해 위의 규칙을 적용하기.
// 좋은 예
getDepartment({
name: "송민재",
age: 26
});
// 나쁜 예: 객체 리터럴 규칙을 지키지 않음
getDepartment({name: "송민재", age: 26});
객체 프로퍼티 작성 규칙은 8.2 변수명 생성 규칙과 같음. 객체 메서드는 9.2 함수명 규칙을 따름. 프로퍼티나 메서드가 private라면 _를 맨 앞에 붙여 private라고 명시적으로 알려주기.
var person = {
_homeAddress: "인천",
name: "황혁진",
age: 26,
_getHomeAdrress: function() {
return this._homeAddress;
}
}
변수 | 함수 | 문장 규칙
- 변수 연산자는 반드시 사용 전에 선언되어야 한다. 한 개의 var을 이용해 함수의 맨 윗줄에 선언하며, 대입 연산자는 같은 단계의 들여쓰기를 사용하기.
- 마지막 변수 선언 전까지는 ,로 구분을 해주며 마지막 변수에는 세미콜론(;)을 붙여주기. 초기화된 변수는 반드시 초기화 되지 않은 변수보다 앞에 위치 시키기.
// 좋은 예
var name = "권현아",
age = 23,
home = "방화동";
// 나쁜 예: 대입연산자의 들여쓰기가 맞지 않음
var name = "권현아",
age = 23,
home = "서울과 인천의 경계";
// 나쁜 예: 들여쓰기가 맞지 않음
var name = "권현아",
age = 23,
home = "서울과 인천의 경계";
// 나쁜 예: 한 줄에 여러 변수 선언
var name = "권현아", age = 23, home = "서울과 인천의 경계";
// 나쁜 예: 초기화 되지 않은 변수가 먼저 위치함
var name,
age = 23,
home = "서울과 인천의 경계";
- 변수명은 낙타표기법을 사용한다. $나 \는 사용하지 않으며 _도 사용을 자제하기.
- 변수명은 소문자로 시작하며 새로운 단어의 첫 번째 문자는 대문자를 사용.
- 변수명의 첫 단어는 반드시 명사를 사용해주어 함수와 구분하기 쉽도록 하기.
// 좋은 예
var firstName = "혁진";
// 나쁜 예: 대문자로 시작
var FirstName = "혁진";
// 나쁜 예: 빈칸 들어감
var first_name = "혁진";
// 나쁜 예: 동사로 시작
var getFirstName = "혁진";
변수를 값이 변하지 않는 상수로 사용하려면 이름의 모든 문자를 대문자로 사용하며 단어 사이에 밑줄( _ )을 넣어주기.
var TOTAL_COUNT = 1,
TOTAL_POPULATION = 1000;
- 객체에 선언된 메서드가 아니라면 반드시 함수 선언 형식을 사용하기.
- 함수 표현식, new를 이용한 생성자 형식을 사용하지 않기. (객체 생성 시 사용)
- 함수명과 여는 괄호 '(' 사이에는 공백 넣지 않는다. '(' 와 ')' 사이에는 공백 하나를 넣어주기.
- 인자 입력시 , 뒤에 공백을 넣기.
- 함수 본문은 한 단계 들여쓰기를 사용.
// 좋은 예
function working(arg1, arg2) {
return money;
}
// 나쁜 예: 함수 명과 괄호 사이에 공백
function working (arg1, arg2) {
return money;
}
// 나쁜 예: 함수 표현식 사용
var working = function(arg1, arg2) {
return money;
}
// 나쁜 예: 생성자 방식 사용
var money = new Function("arg1", "arg2");
익명 함수는 객체에 메서드 할당 시나, 다른 함수에 인자로 전달할 때 사용합니다.
person.name = function() {
// 코드
};
getName(function() {
// 코드
});
함수명 역시 낙타표기법을 사용하기. 첫 번째 단어는 동사를 사용하여 변수명과 구분해주기.
// 좋은 예
function getName() {
};
// 나쁜 예: 대문자로 시작
function GetName() {
};
// 나쁜 예: 명사 사용
function name() {
};
// 나쁜 예: _ 사용
function get_name() {
};
생성자 함수는 new를 통해 생성할 때 실행되는 함수며 객체 인스턴스를 생성할 때 사용하므로 동사로 시작하지 않고, 첫 문자를 대문자로 시작.
// 좋은 예
function Enemy() {
};
// 나쁜 예: 소문자로 시작
function enemy() {
};
반환하는 값의 명확한 의미를 알기 위해 괄호를 사용하지 않기.
// 좋은 예
var generation = (age <= 7 ? "baby" : "teenager");
return generation;
// 나쁜 예
return (age <= 7 ? "baby" : "teenager");
한 문장이라도 중괄호를 포함. (다음에 문장을 추가할 때 중괄호를 빼먹는 실수하지 않도록)
// 좋은 예
if (person != null) {
work();
}
// 나쁜 예
if (person != null)
work();
- case는 switch를 기준으로 한단계 들여쓰기.
- 첫 번째 case를 제외한 case와 default 사이에는 한 줄의 공백이 있어야 함.
- default를 제외한 case는 return, break, throw 중 하나로 마쳐야 하고 다음 case로 의도적으로 넘기는 부분은 주석처리를 해주기.
- default를 의도적으로 생략했으면 주석처리 해주기.
// 좋은 예
switch (num) {
case 0:
break;
case 1:
break;
default:
break;
}
// 좋은 예
switch (num) {
case 0:
// 다음 case와 같은 동작 처리
case 1:
break;
default:
break;
}
// 좋은 예
switch (num) {
case 0:
break;
case 1:
break;
// default 구문 생략
}
copyrightⓒ 2021 All rights reserved by 폼생폼사