CleanCode TIL 마지막

최정환·2022년 3월 10일
0

clean-code

목록 보기
11/11

내가 이 책을 읽고 배운 점으로 토대로 원칙3개를 예시코드를 작성하며 설명한다.

원칙 1.
변수의 이름은 분명한 의도가 있어야하며 알기 쉬워야한다.

Before 😣

const a = ["apple","banana","melon"];
let f = "apple";
for(i of a){
  if(i===f){
 console.log(`${i} is mine`);
  }
}

무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.

변수가 무엇인지, 무엇을 구하기 위해 존재하는 함수인지 모르겠다.

After 😎

const fruits = ["apple","banana","melon"];
let favorite = "apple";
for(fruit of fruits){
  if(fruit===favorite){
 console.log(`${fruit} is mine`);
  }
}

어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.

변수가 어떤걸 말하고 싶은지, 함수가 뭘 뱉고 있는지 알 수 있게된것같다.
변수명을 내가 어떻게 썻었는지 기억을 더듬어 가며 위에 갔다 내려왔다 하지 않아도 된다.


원칙 2.
하나의 함수는 하나의 일을 해야한다. 함수는 쪼갤수록 좋다.

Before 😣

let arrFifty = [];
let arrSeven = [];

const findEvenInFifty = ()=>{
  for(let i=1;i<=50;i++){
    if(i%2==0){
     arrFifty.push(i)
    }
  }
  return arrFifty
}

const findEvenInSeven = ()=>{
   for(let i=1;i<=7;i++){
    if(i%2==0){
     arrSeven.push(i)
    }
  }
  return arrSeven 
}

무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.

함수의 이름이 너무 복잡해지고 범위를 고치거나 다른 곳에서 중복적으로 사용될때가 있으면 하나의 함수안에 넣으면 복잡해진다.

After 😎

let arrFifty = [];
let arrSeven = [];

const isEvenThenPush = (num, arr)=>{
  if(num % 2 == 0 ){
    arr.push(num)
  }
}

const findEven = (maxNum,arr)=>{
  for(let i=1; i<=maxNum; i++){
    isEvenThenPush(i,arr);
  }
}

findEven(50, arrFifty);
findEven(7, arrSeven);

어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.

변수명이 너무 더러워져서 깨끗한 코드인지는 잘 모르겠지만 함수를 나누는 것으로 인자를 주는 것으로 최대 숫자를 정하고 짝수의 배열을 반환하는 함수를 중복되게 사용하지 않아도 된다.

하지만 중복되는 코드가 적다면 사용하지 않는 것이 좋겠다. 내 머리로 작성하는 함수의 한계로 이렇게 밖에 표현을 못하겠다 ㅜㅜ


원칙 3.
예외 처리나 테스트 코드에서 Null을 사용하는 것은 좋지 않다.

Before 😣

const isWorking = (json)=>{
  json.data ? "ok" : null
}

if(isWorking(json)) {
  console.log("working!")
}

무엇을 고치려고 하는지, 고치려는 문제가 무엇인지 알려주세요.

내가 원하는대로만 코드가 움직인다고 생각하지 말고 만약 다른 상황이 발생하면 어떻게 할것인지 알려줘야한다.

After 😎

const isWorking = (json)=>{
  return json.data ? "ok" : "none"
}

if(isWorking(json) === "ok" ) {
  console.log("working")
}else{
  console.log("nothing here")
}

어떻게 고쳤는지, 사례에서 무엇을 배워야 하는지 설명해주세요.

원하는 값이 나오지 않으면 해당하는 역할을 하는 결과값도 써줘야하며 무조건 내가 원하는 값이 나온다는 상황을 가정하며 null을 사용하면서 예외에 대한 처리로 부터 눈을 돌리면 안된다.

0개의 댓글