개발/프론트엔드 (JS & React)

[Refactoring JavaScript] 노트 1 - 리팩토링에 대해

jungwon_ 2022. 9. 15. 16:25

리팩토링이라는 단어는 잘못 사용되기 쉽다.

 

그래서 간단하게 짚고 넘어가고자한다.

 

 

리팩토링은 interface 혹은 behavior를 유지하되 코드 구현이 달라지는 것을 의미한다. interface나 behavior이 바뀐다면 그건 앞으로 다룰 리팩토링이라는 뜻이 될 수 없다.

 

예를 들어 새로운 기능을 추가하거나 버그를 수정하거나 하는 것들 모두 리팩토링이 될 수 없다. 왜냐하면 근본적으로 behavior를 추가하거나 바꾸는 것이기 때문이다.

 

그럼 behavior를 바꿀 수 없는데 왜 리팩토링을 하는걸까?

 

리팩토링을 하는 이유는 좋은 품질의 코드(quality code)를 만들기 위해서다.

 

quality code란 정상적으로 작동하면서도 확장하기 쉬운 코드를 의미한다.

(The quality code is code that works properly and is able to be extended easily.)

 

 

리팩토링을 할 때 테스트는 빠질 수 없는 부분이다.

 

왜냐하면 앞서 말했듯 리팩토링이란 behavior를 바꾸지 않아야하는데, 이 말은 어떠한 input을 넣었을 때 예상되는 output 값이 나와야한다는 뜻이다.

 

이런 테스트 과정이 없는 상태에서 코드를 변경하는 것은 말 그대로 그냥 코드를 change 하는 것이지 refactor 한다고 할 수 없다.

 

 

리팩토링에 대해 공부하기 전에 리팩토링의 의미부터 다시 정확하게 정리해보았다.


출처

- Refactoring JavaScript [Book] by Evan Burchard