본문 바로가기
Script/JavaScript

[JavaScript] Chapter 32. Clean Code 작성법

by song.ift 2023. 1. 12.

클린코드를 만드는 것은 개발할 때 중요하다. 왜냐하면 개발할 때 여러명의 개발자와 함께 협업하기 때문에 읽기 쉽고 유지보수 하기도 좋아야하기 때문이다.

 

1. 화살표함수로 function 축약하기

ES6의 가장 유명한 함수 표현 방법인 화살표함수다.

긴 기존의 함수호출 return 방식을 화살표 함수를 사용하면 역시 간결하고 보기 좋게 축약할 수 있다.

하지만 재사용은 불가능하기 때문에, 매번 새롭게 작성해줘야 한다.

// 기존의 함수
function getSize(width, height) {
	return width * height
};

// 화살표 함수
getSize = (width, height) => (width * height)

 

2. 삼항연산자 사용

이런 if, else문은 삼항연산자를 사용하면 한줄로 간결하게 정리할 수 있다. 

// if문을 사용한 긴 코드
let color = "";
if (score > 90) {
  color = "blue";
} else {
  color = "yellow";
}

// 삼항연산자를 사용해서 축약
let color = (score > 90) ? "blue" : "yellow";

 

3. 삼항연산자로 함수 호출

삼항연산자를 사용해 조건에 따라 함수를 호출 할 수 있다. 아래의 단축 버전 함수 호출은 즉시실행 함수를 사용한 것이다.

function test1() {
  console.log('테스트01');
};
function test2() {
  console.log('테스트02');
};

const test3 = 1;
if (test3 == 1) {
  test1();
} else {
  test2();
}

// 단축한 버전의 함수 호출
(test3 === 1 ? test1 : test2)();

 

4. 다중 조건일 때, or 연산자 나열한 것 축약하기

if 문 안에 여러 개의 or 조건을 추가해야할 때가 있다. 중복된 코드가 한없이 길어진다.

이것을 include() 메소드를 이용해서 간결하게 만들 수 있다.

(그러나 include() 메소드를 지원하지 않는 브라우저가 있기 때문에 낮은 버전 브라우저도 대응하는 서비스를 개발한다면 사용전 확인은 꼭 해야한다.)

// 기존 방법
if (col === "score" || col === "age" || col === "mobile" || col === "email") {
  // 조건에 따른 로직
}

// 개선된 방법
if (["score", "age", "mobile", "email"]).includes(col) {
  // 조건에 따른 로직
}

 

5. || 연산자로 Null, undefined, 빈 값  등 falsy 값 체크

자바스크립트는 타입지원이 미흡한 언어이기 때문에 늘 null, undefined, 빈 배열 또는 빈 문자열 등의 falsy 값 체크는 필수다.

그렇기 때문에 요즘 프론트 개발할 때 타입스크립트를 많이 사용하는 이유다.

이런 falsy 값 체크를 여러 개의 조건을 다닥다닥 나열하는 대신 || 연산자를 사용하면 한줄로 정리할 수 있다. 

// if문을 사용한 긴 조건문 나열
if (member !== null || member !== undefined || member !== "" || member !== 0) {
  let student = member;
}

// 간단하게 falsy를 평가하고 값을 할당하는 축약버전
let student = member || "";

 

6. || 연산자로 falsy 값 체크 후, return 하기

조건에 따라 함수를 호출해 return 값 줄 때도 || 연산자를 사용해서 단축된 표현식으로 만들 수 있다.

let active;
function checkActive() {
  if (!(active === undefined)) {
  	return active;
  } else {
    return helloActive("active");
  }
}

var data = checkActive();
console.log(data); // output test

function helloActive(val) {
  alert(val);
}

// 단축한 함수
function checkActive() {
  return active || helloActive("active");
}

 

7. for문 심플하게

for문을 작성하다보면 체크해줘야할 조건들 (기본값, 순회할 범위 등)이 괄호 안에 많기 때문에 종종 실수할 수 있다.

이런 실수와 오타를 줄이고 간결한 loop문 작정을 for in 문 for of 문으로 해결할 수 있다.

// 긴 for문
for (let i = 0; i < arr.length; i++)

// loop문을 이렇게 축약가능
for (let i in arr) 또는 for (let i of arr)

또 다른 방법으로는 forEach문 사용이 있다.

function arr(el, index, array) { 
  console.log(`test[${index}]=${el}`);
}

[12, 34, 54].forEach(arr);

 

8. Switch문 축약하기

체크할 조건이 엄청 많아질 때 우리는 switch문을 사용한다. switch문도 가끔 엄청 길어져서 보기 지저분 할 때가 있다. 
간단한 조건 식이라면 객체를 이용해서 switch문도 간략하게 단축할 수 있다.

객체 안에 key, value 쌍으로 값을 집어넣고, 그 중에 맞는 조건만 골라서 실행하게 하면 된다. 

// Longhand
switch (data) {
  case 1:
    test1();
    break;

  case 2:
    test2();
    break;

  case 3:
    test();
    break;
}

// 축약형
const data = {
  1: test1,
  2: test2,
  3: test
};

data[anything] && data[anything]();


9. 문자열 여러번 반복하기

가끔 문자열을 단순 반복할 때가 있다.

그럴 때 for문을 돌려서 횟수를 반복해 문자열을 합해줄 수 도 있지만 repeat() 메소드를 사용하면 한줄로 만들 수 있다.

(단, repeat() 역시 지원하지 않는 브라우저가 있기 때문에 사용전에 확인을 해야한다.)

// 기존 for문 사용
let str = "";
for(let i = 0; i < 10; i++){
  str += "flower";
}

// repeat() 메소드 사용
strRepeat = "flower".repeat(10);


10. Math.pow() 메소드 축약하기

Math 함수는 수학적 연산들을 수행할 때 사용하는 자바스크립드의 내장 메소드다.

그 중에서 제곱연산을 하는 pow() 메소드를 단축하는 연산방법이다. 곱셈기호 *를 두번 사용하면 pow()연산을 수행하게 된다. 

Math.pow(2, 5);

// ->
2**5

 

 

댓글