Home 리팩토링(1)
Post
Cancel

리팩토링(1)

Refactoring (1)

최근 업무를 하며 기존의 레거시 코드를 수정해야만 하는 일이 생겼습니다. 기존의 코드를 보면서 코드를 깔끔하게 작성하지 않았을 때, 수정하기 어렵고 다른 사람의 코드를 보았을 때 이해하기 어렵다는 것을 느껴 코드를 분리하고 클래스를 정리하는 등의 작업을 하였습니다.

그러던 중, 최근 토스 컨퍼런스에서 Clean Code와 관련된 발표 내용을 듣게 되면서 리팩토링을 제대로 공부를 해보고 싶다는 생각에 공부를 시작했습니다.

리팩토링(Refactoring)이란 무엇일까?

  • 겉으로 드러나는 기능은 그대로 두면서, 알아보기 쉽고 수정하기 간편하게 SW의 내부를 수정하는 과정
  • 코드를 작성한 후, 설계를 향상 시키는 작업

리팩토링을 해야하는 이유는 뭘까?

  1. SW 설계가 개선되기 때문에
    • 기능이 같은 코드가 여기저기 중복되어 있어 코드만 길어지는 것을 방지
    • 코드 수정이 편리해짐
  2. SW를 이해하기 쉬워지기 때문에
    • 다른 개발자가 이해하기 쉬워지기 때문에 효율성이 증대
    • 낯선 코드를 이해하기 쉬워지면서, 기능파악이 편리해짐
  3. 프로그래밍의 속도가 빨라지기 때문에
    • 코드를 신속하게 개발하는 것이 가능해 짐
    • 다른 사람에게 물어보지 않아도 알 수 있기 때문에 유지보수의 시간이 단축되는 효과

리팩토링은 언제 진행해야 할까?

  1. 같은 작업을 3번 이상 반복해서 할 때

  2. 기능을 추가할 때

    • 기존에 클린했던 코드라도 기능을 추가함으로써 코드가 더러워질 수 있다.
      • 하나의 목적인 코드는 뭉쳐 두기
      • 함수가 한 가지 일만 하도록 쪼개기
    • 기존에 코드가 이해하기 어려워 기능을 추가하기 힘들 때

    원하는 로직을 빠르게 찾기 위해서 고려해야할 사항

    • 응집도
      • 하나의 목적을 가진 코드가 흩뿌려지지 않도록 해야한다.
      • 당장 몰라도 되는 데이터는 뭉치고, 핵심 정보는 분리
    • 단일책임
      • 함수가 여러 가지 일을 하고 있다.
    • 추상화
      • 함수의 세부구현 단계가 제각각으로 되어 있다.
  3. 버그를 수정할 때

    • 리팩토링을 통해 코드를 이해하기 쉽게 만들어 버그를 수정
  4. 코드를 검수할 때

리팩토링을 하면 안되는 상황

  • 코드를 처음부터 새로 작성해야 할 때
  • 프로그램 개발 기간이 임박한 상황일 때

참고자료

  • 리팩토링_코드 품질을 개선하는 객체지향 사고법 _마틴파울러 저
  • 토스 컨퍼런스 발표자료_ 실무에서 바로 쓰는 Frontend Clean Code_진유림