클린 코드란 가독성 좋은 코드를 말한다.
기능이 복잡할수록 코드도 복잡해지고 지저분해지기 쉽다.
동시에 기능이 복잡한 프로그램은 여러 명의 개발자가 함께 개발해야 하거나 여러 기능을 지속적으로 수정하고 추가해야 할 상황이 많다.
그래서 코드는 최대한 사람들도 이해하기 쉽도록 만들어야 한다.
1. 코딩 컨벤션(coding convention) 따르기
함수나 변수 등의 이름을 짓는 규칙을 말한다.
- 함수의 이름은 목적에 맞게 지어져 있어야 한다.
- 함수에 있는 내용이 이름과 어울리도록 하나의 로직을 담고 있어야 한다.
- 함수는 동사+명사로 이루어져 있어야 한다.
- 함수의 이름은 카멜 표기법 또는 _를 중간에 사용하여지어야 한다. (보통은 카멜 표기법을 많이 사용한다)
- 변수는 명사이며 의미 있는 이름으로 지어야 한다.
그 외 자바스크립트 컨벤션 보러 가기
2. 의도가 보이는 코드
코드를 봤을 때, 무슨 기능을 위한 코드인지, 그 의도가 잘 보인다면 그 코드는 좋은 코드이다.
예제)
var a = value * 19.2;
value라는 어떤 값에 19.2라는 숫자를 곱하여 변수 a에 담는 코드이다.
이 상태로는 19.2가 뭘 의미하는 숫자인지 알 수 없다.
var paddingValue = 19.2;
var a = value * paddingValue;
이렇게 paddingValue라는 변수에 숫자를 담아 사용하면, 변수 a에 담기는 값이 어떤 value에 패딩 값을 더한 값이라는 것을 알 수 있다.
이걸 공부하면서 예전에 어떤 값을 반복적으로 더해주는 코드를 짰던 것이 떠오른다.
그때 잘못된 예제처럼 직접 숫자를 입력해서 더하는 바람에 이 값을 왜 더하는 거냐는 질문을 받았던 기억이 난다.
주석으로 무슨 값인지 적어놓는 걸로 처리했는데, 저렇게 변수로 담아서 처리하면 더 좋았을 거란 생각이 든다.
3. 전역 변수 남발 금지
함수 내에서만 사용하는 변수는 지역변수로 만들어야 한다.
불필요한 전역 변수는 수정할 때 찾기 복잡해진다.
예제)
var word = 'hello';
function printData(data) {
return data;
}
function exec() {
var data = 'world';
word = word + " ";
printData(word+data);
}
'hello world'를 출력하기 위한 코드이다.
분명 word 변수는 exec이란 함수에서 밖에 쓰이지 않지만, 전역 변수로 선언되어 있다.
지금은 짧은 코드라 큰 문제없지만, 나중에 코드가 길어졌을 경우, exec 함수를 볼 땐 word 변수의 값이 뭔지 찾기 어려울 것이다.
또한 word라는 변수의 값을 다른 함수에서 바꾸게 된다면, 원하는 결과와 다른 결과를 얻게 될 것이다.
그러므로 한 함수에서만 쓰이는 변수는 그 함수 안에서 지역변수로 사용하는 것이 적합하다.
function printData(data) {
return data;
}
function exec() {
var data = 'world';
var word = word + " ";
printData(word+data);
}
이렇게 exec 함수의 지역 변수로 사용하고, printData 함수처럼 다른 함수에 값이 필요한 경우엔 인자로 넘겨주는 것이 적합하다.
4. if문 중첩 최소화하기
if문 중첩을 최소화하면 더 이해하기 쉬운 코드가 될 것이다.
if문 중첩 예제)
function testExam(check, point) {
if(check) {
if(point) {
return true;
}
}
}
check가 true이면, point가 true인지 확인하고, point도 true일 때 true를 리턴하는 함수이다.
if문 두 개가 중첩되어 있다.
하지만 아래 예제처럼 한다면 중첩된 코드를 없앨 수 있다.
function testExam(check, point) {
if(!check) return;
if(point) {
return true;
}
}
check가 true가 아닐 경우 바로 리턴 시켜 함수를 종료시켜버리는 것이다.
5. 정적 분석 도구 이용
eslint와 같은 도구로 자신의 코드에 문제가 없는지 확인해볼 수 있다.
+) 이 외에도 클린 코드를 작성하는 방법이 많이 있다.
edwith 강의에서 추천해준 교재가 있다.
1. Clean Code
비록 자바스크립트 클린 코드에 관한 수업이었지만, 강사님 말씀대로 자바스크립트나 어떤 한 언어에 국한된 얘기는 아니다.
다른 언어로 된 교재라도, 혹은 다른 언어로 개발할 때에도 위 사항들을 생각하며 클린 코드를 짤 수 있도록 노력해야겠다.
출처)
edwith 부스트코스 웹 프로그래밍
'JavaScript' 카테고리의 다른 글
handlebar 중첩 데이터 바인딩, @데이터변수 (0) | 2019.08.19 |
---|---|
Visual Studio Code로 HTML, JavaScript 사용하기 (5) | 2019.08.18 |
자바스크립트 템플릿 라이브러리 - handlebars (0) | 2019.08.09 |
자바스크립트 라이브러리 (0) | 2019.08.08 |
this를 제어할 수 있는 bind 메서드 (1) | 2019.08.05 |
댓글