리팩터링이란 - 리팩터링 2판
리팩터링은 겉으로 드러나는 코드의 기능은 바꾸지 않으면서, 내부 구조를 개선하는 방식으로 소프트웨어 시스템을 수정하는 과정이다.
버그가 생길 가능성을 최소로 줄이면서 코드를 정리하는 정제된 방법이다.
요컨대, 리팩터링한다는 것은 코드를 작성하고 난 뒤에 설계를 개선하는 것이다.
"코딩 후 설계 개선"이라는 정말 이상한 말이다. 우리가 예전부터 따르던 소프트웨어 개발 방법은 설계부터 하고 코드를 작성하는 방식인데, 좋은 설계가 우선되어야 하고 코딩은 그 다음이다.
하지만 시간이 흐르면서, 코드는 수정되고 시스템의 무결성, 즉 설계에 맞춘 구조는 점차 뒤죽박죽이 되어간다.
공학에 가깝던 코딩 작업은 서서히 해킹에 가까워진다.
이 과정을 반대로 하는 것이 리팩터링이다.
리팩터링을 하면 잘못된 설계나 심지어 엉망인 설계를 가져다가 체계적으로 설계된 코드로 탈바꿈할 수 있다.
리팩터링의 각 단계는 간단하다 못해 지나칠 정도로 단순하다.
한 클래스의 필드를 다른 클래스로 옮기고, 일부 코드를 메서드 밖으로 빼서 별도의 메서드로 만들고, 코드 일부를 상속 구조의 위/아래로 올리거나 내리는 등의 작업이다.
이런 사소한 수정도 누적되면, 설계가 놀랍도록 개선된다.
소프트웨어가 부식된다는 개념의 정반대가 바로 리팩터링이다.
리팩터링을 하면 일의 균형이 바뀐다. 처음부터 완벽한 설계를 갖추기 보다는 개발을 진행하면서 지속적으로 설계한다. 시스템을 구축하는 과정에서 더 나은 설계가 무엇인지 배우게 된다. 그 결과, 개발의 시작부터 끝날 때까지 프로그램은 줄곧 우수한 설계를 유지할 수 있다.
'개발 > FrontEnd Interview' 카테고리의 다른 글
YAGNI에 대해서 말해주세요. (0) | 2021.05.29 |
---|---|
리팩터링을 해야하는 이유는 무엇인가요? (0) | 2021.05.29 |
왜 styled-component를 사용하셨나요? (1) | 2021.05.14 |
커스텀 훅이란 무엇인가요? (0) | 2021.05.07 |
훅이란 무엇인가요? (0) | 2021.05.07 |