좋은 코딩이란 무엇일까? 디자인 패턴? 오류가 안나는 코드? 🤔
구글에 검색해보니,
"가독성이 좋아 이해하기 쉽고, 변경하기 쉬우며, 재사용하기 쉽고, 효율적인 코드"가 좋은 코드라고 한다.
검색해보니 아주 많은 글이 나와서 차근히 읽어보면 좋을 것 같다.
좋은 코드에 대해서는 굉장히 많은 이야기가 있지만 조금 더 명확하게 코딩을 하는 규칙이 정해져있기도 하다.
바로 "코딩스타일","코딩 컨벤션"인데, 코드를 만들 때 지켜야하는 코딩 스타일이다.
사용하는 프로그래밍 언어나 프로젝트에 따라 코딩 컨벤션이 정해져있다.
Js의 코딩스타일에 대해서 알아보자.
(별개로 좋은 코드에 대해서 계속해서 고민하는 것 필요한 것 같다!)
🤔 if
문의 한 줄 짜리 수행문을 어떻게 하면 좋을까?
😤 필요없는 중괄호
if (n < 0) {alert(`Power ${n} is not supported`);}
😠 중괄호 없는 새로운 코드
if (n < 0)
alert(`Power ${n} is not supported`);
🙂 중괄호 없이
if (n < 0) alert(`Power ${n} is not supported`);
😄 적절한 중괄호
if (n < 0) {
alert(`Power ${n} is not supported`);
}
🤔 코드의 가로 길이가 너무 길다면 읽기 힘들어진다.
😄 가로길이가 너무 길지 않도록 문자열의 경우 백틱을 사용하고, if
문이라면 조건을 줄바꿈을 해서 적는 것이 좋다.
🙂 가로 들여쓰기는 Tap
보다는 스페이스
를 선호하는 추세라고함, 세로 들여쓰기는 적절하게!
➕ 세로 들여쓰기
변수 선언, 반복문, 리턴 문 사이에는 줄바꿈을 하는 것이 좋다.
아홉줄 이상 세로 들여쓰기가 없는 경우에는 가독성이 떨어진다고 한다.
🙂 세미콜론은 쓰는 것이 좋다. (자바스크립트 엔진이 자동으로 세미콜론을 붙여준다고 하더라도!!)
🤔 너무 깊은 중첩레벨은 피하는 것이 좋다. 특히 반복문에서의 if
문의 중첩은 continue
문으로, 함수내의 중첩은 return
으로 해소할 수 있다.
👉 if
문을 써서 특정 조건에서 여러 실행문을 쓰고 싶을 때, 특정 조건이 아닐때 continue
문으로 사용할 수 있다.
😑 과한 중첩
for (let i = 0; i < 10; i++) {
if (cond) {
... // <- 중첩 레벨이 하나 더 늘어났습니다.
}
}
🙂 향상된 코드
for (let i = 0; i < 10; i++) {
if (!cond) continue;
... // <- 추가 중첩 레벨이 추가되지 않습니다.
}
👉 함수내에서 적절한 return
문의 사용은 중첩을 줄일 수 있다.
😑 함수내의 과한 중첩
function pow(x, n) {
if (n < 0) {
alert("'n'은 음수가 될 수 없습니다.");
} else {
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
}
🙂 향상된 코드
function pow(x, n) {
if (n < 0) {
alert("'n'은 음수가 될 수 없습니다.");
return;
}
let result = 1;
for (let i = 0; i < n; i++) {
result *= x;
}
return result;
}
헬퍼함수
: 다른 함수 안에서 특정기능을 하고 있는 함수를 말한다.
🤔 헬퍼함수와 헬퍼함수를 사용하는 코드의 정의순서
😄 헬퍼 함수를 사용하는 코드 → 헬퍼 함수
for/if/while
의 뒤에 공백 한 칸을 준다.😑 좋지 않은 코드
function pow(x,n)
{
let result=1;
for(let i=0;i<n;i++) {result*=x;}
return result;
}
let x=prompt("x?",''), n=prompt("n?",'')
if (n<=0)
{
alert(`Power ${n} is not supported, please enter an integer number greater than zero`);
}
else
{
alert(pow(x,n))
}
🙂 향상된 코드
function pow(x, n){ // 인수 사이에는 공백
let result = 1; // 연산자 앞뒤로 공백
for (let i=0; i < n; i++) { // for문 뒤로 공백 한칸 & 적절한 공백
result *= x;
}
//적절한 줄바꿈
return result;
}
let x = prompt("x?", ''); // 연산자 공백 & 인수 공백
let n = prompt("n?", '')
if (n<=0) { // 중괄호 위치 변경
alert( `Power ${n} is not supported
, please enter an integer number greater than zero`
); // 너무 긴 가로 길이 지양
} else { // else { 은 한줄에
alert( pow(x, n) ); // 중첩 공백, 세미콜론
}
좋은 코드를 쓰기 위해서는 노력해야한다.
같이 일하는 사람과 같이 일할 사람들이 잘 알아들을 수 있는 코드, 내가 봐도 이해할 수 있는 코드가 좋은 것 같다.