티스토리 뷰

 

 

이쁜 코드를 짜는 규칙

구독하고 있는 채널에서

관심 있는 주제(코드 퀄리티를 높이는 방법)에 대한 영상이 올라왔다.

이 글은 이영상에 대한 정리이다.

DRY

Don't Repeat Yourself

(반복하지 마라)

 

반대말로는

Write Everything Twice

(모든 걸 두 번씩 적는다)

반복되는 코드를 계속 하나하나 적음으로써

가독성이 줄어들고 코드 덩어리가 커지는 방법이다.

 

즉 다른 말로 하자면

DRY 방법을 쓰면 가독성을 향상하고,

후에 코드를 보완하는 유지보수에 대한 비용이 줄어든다.

 

제일 간단한 예로는 css 변수 설정을 들 수 있다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div style="width: 100px; height: 100px; background: #eca3f5; border-radius: 10px; margin-bottom: 10px;"></div>
  <div style="width: 100px; height: 100px; background: #eca3f5; border-radius: 10px; margin-bottom: 10px;"></div>
</body>
</html>

해당 코드로 이 결과를 얻을 수 있다.

하지만 같은 style을 WET방식으로 반복하여 적었으므로,

배경색을 변경하려면 하나하나 수정해야 한다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{width: 100px; height: 100px; background: #eca3f5; border-radius: 10px; margin-bottom: 10px;}
  </style>
</head>
<body>
  <div></div>
  <div></div>
</body>
</html>

이를 선택자 스타일로 지정하면

DRY 하게 반복하여 적지 않아도 된다.

KISS

Keep It Simple, Stupid

(단순하게, 멍청하게 유지하자)

 

음.. 이 부분에 대한 예제는 좀 아이러니한 게

이해를 위해 단순하게 만들고 싶지만,

코드가 복잡할수록 효과를 느끼기 쉽다.

function setTime(){
  let today = new Date();
  let hours = today.getHours();

  if(hours >= 12)
    console.log("It's",hours,"clock now \n afterNoon");
    
  else
    console.log("It's",hours,"clock now \n beforeNoon");
}

setTime();

기본적인 코드는 현재시간을 가져와

12시 이후라면 오후라는 메시지를

12시 이전이라면 오전이라는 메시지를 출력한다.

 

여기서 덜 KISS 한 코드로서의 아쉬움은

if문에 따라 나뉜 결과의 의도를

console.log의 인자를 읽고 나서 파악할 수 있다는 것이다.

 

이를 KISS문법으로 바꾸어 단순하게, 알아보기 쉽게 구성하자면

function setTime(){
  let today = new Date();
  let hours = today.getHours();

  if(hours >= 12)
    printTimePM(hours);
    
  else
    printTimeAM(hours);
}

function printTimePM(hours){
  console.log("It's",hours,"clock now \n afterNoon");
}

function printTimeAM(hours){
  console.log("It's",hours,"clock now \n beforeNoon");
}

setTime();

함수명에 해당 코드의 의도를 반영하여

함수명을 읽자마자 '아 이런 의도를 가지고 있구나'라고 파악하기 쉽게 만들 수 있다.

 

코드 한 줄은 보면 보이니깐 굳이 이렇게 해야 하나 생각되기도 했지만,

이를 기초 함수인 console.log가 아닌 다른 함수로 채워져 있다면,

한 줄이 아니라 2~3줄로 늘어난다면,

충분히 가치 있는 방식이라 생각한다.

 

또한 Simple / Stupid의 핵심은 하나의 함수가 하나의 의도만을 가져야 한다.

하나의 함수에서 2가지 행동을 가지면

이는 유지 보수할 때 합쳐져 있는지 확인 후, 분할해야 하는 번거로움이 생긴다.

YAGNI

You Ain't Gonna Need It

(너 그거 필요 없어)

 

불필요한 기능을 넣지 말자이다.

심미성을 제외하고 프로그램의 볼륨을 키우는 건

유지보수에서도, UX에서도 좋지 않은 행동이다.

프리티한 코드~~

'웹개발(프론트)' 카테고리의 다른 글

시간표현  (0) 2021.05.06
정규표현식  (0) 2021.04.30
redux 데이터 여러개 수정하기  (0) 2021.04.27
Imported JSX component text must be in PascalCase or SCREAMING_SNAKE_CASE  (0) 2021.04.26
일러스트로 path 그리기  (0) 2021.04.23
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함