스터디

리팩터링 2판 - 03. 리팩터링하는 이유

developerYoung 2023. 7. 8. 11:46
반응형

리팩터링하는 이유는 무엇인지 알아보려해요.

최근 개발하면서 리팩터링을 하셨나요? 했다면 어떤 이유로 하셨나요?! (오늘도 어김없이 컨셉을 잡습니다 ㅎ)

 

리팩터링을 통해 모든 문제점이 해결하는건 아니지만, 우리가 확실히 얻을 수 있는 이점은 꼭 얻었으면 좋겠어요.

우리가 왜 리팩터링을 해야하는지 한번 나눠볼게요!

 

소프트웨어 설계가 좋아지게 하자!

대표적으로 중복 코드가 여기저기 뿌려져있다면 모든 곳을 수정했는지 알 수 없어요. 그 말은 해당 코드를 수정할 때, 모든 곳에서 예상대로 작동할 것을 확신할 수 있을까요?

바람직한 설계의 핵심은 모든 코드가 언제나 고유한 일을 수행함을 보장할 수 있어야해요.

 

// /
<Link href={`https://pf.kakao.com/______/chat`}>
  오픈채팅링크
</Link>

// /user
<Link href={`https://pf.kakao.com/______/chat`}>
  오픈채팅링크
</Link>

// /home
<Link href={`https://pf.kakao.com/______/chat`}>
  오픈채팅링크
</Link>

// /test
<Link href={`https://pf.kakao.com/______/chat`}>
  오픈채팅링크
</Link>

 

예를들면 위와 같이 오픈채팅링크가 사방팔방 있다고 생각해봐요!

만약 링크가 바뀐다면 모든 페이지를 다 찾아서 수정할건가요?

아니죠! 우리는 하나의 상수로 관리하여 단순히 중복된 코드를 줄이는 것이 아닌 상수를 수정했을 때, 모든 코드가 고유한 일을 수행함을 보장받을 수 있어요! 아래처럼 상수화를 통해 견고한 설계를 만들어야해요!

 

// /
<Link href={OPEN_CHAT_URL}>
  오픈채팅링크
</Link>

// /user
<Link href={OPEN_CHAT_URL}>
  오픈채팅링크
</Link>

// /home
<Link href={OPEN_CHAT_URL}>
  오픈채팅링크
</Link>

// /test
<Link href={OPEN_CHAT_URL}>
  오픈채팅링크
</Link>

 

소프트웨어를 이해하기 쉬워지게 하자!

컴퓨터가 이해하는 코드는 바보도 짠다고 했어요.

우리는 언제 소스 코드를 봐도 잘 읽히고, 이해하기 쉽게 만들어가기 위해 리팩터링을 해야해요.

즉, 코드의 목적이 무엇인지 코드의 의도를 명확하게 전달하도록 개선할 수 있어야 해요!

이것은 다른 사람을 위한 배려도 있지만, 나 자신이 짠 코드를 모두 기억할 필요가 없게 해주는 방법이기도 해요! 굳이 필요없는 코드는 잊어버리고 읽으면서 이해해볼까요?

 

이 부분에선 특히 개발팀의 문화에 맞게 함께 맞춰가는게 좋아요!

저희 개발팀도 코드리뷰를 통해 서로의 코드에서 좋은 점이 있다면 함께 규칙으로 정해서 적용해간답니다 ㅎㅎ

 

 

버그가 생기지않게 견고하게 하자!

리팩터링의 장점은 리팩터링을 통해 코드가 견고해지는 점이 있어요. 구조를 명확하게 다듬으면서 버그를 지나칠 수 없게 코드에 반영할 수 있어요!

 

리팩터링을 한다면 (또는 코드리뷰) 다시 한번 살펴보기 때문에 해당 코드에서 버그가 생길 가능성을 생각할 수 있어요.

 

저희는 최근까지 아무렇지않게 아래와 같은 colormap을 사용했었어요.

const colorMap = {
	'서울' : 'black',
    	'경기' : 'red',
   	'강원' : 'yellow'
    ...
}

colorMap[region]

아래에서 colorMap[region] 을 사용했었는데 강원같은 경우에 강원특별자치도로 변하면서 페이지자체에서 error가 나게 되어 접근할 수 없는 페이지가 되어버렸어요. 공공데이터 특성상 원치않도록 되는 경우가 많았던거죠..

그래서 map으로 하지않고 list로 찾는 방법으로 바꾸게 되었어요.

 

이렇게 리팩터링을 통해서 버그가 생기지않는 서비스를 만들어가도록 노력하고 있답니다 ㅎㅎ

 

프로그래밍의 속도가 높아지도록 하자!

위의 장점들의 목표는 결국엔 프로그래밍의 속도가 높아지게 만드는 것입니다.

리팩터링을 하는 시간을 확보하기때문에 전체 개발 속도가 느려질까봐 많이 걱정할 수도 있어요. (비개발 측면에선 특히나 안좋은 시선이 생길수 있어요..ㅠㅠ)

하지만 리팩터링의 목표는 수정하기, 추가하기, 이해하기 좋은 코드를 만들어가는 거죠! 시스템은 새로운 기능들이 계속해서 추가되고, 그만큼 버그가 많이 생겨요. 그로인해 디버깅에 걸리는 시간 / 어디를 수정,추가해야하는지 한참을 찾는 시간들을 지속적으로 리팩터링을 하며 견고하게 된다면, 더 빠르고 쉽게 서비스를 만들어갈 수 있어요.

 

매일 발전되는 시스템에서 처음부터 좋은 설계란 애초에 어려운 것이에요..ㅎㅎ

그렇기때문에 리팩터링을 통해 계속해서 개선해가면서 빠른 개발을 할 수 있는 발판을 마련해봐요!

 

반응형