LISTORY

코드 리팩토링 [과다한 매개변수 / 수정의 산발] 본문

IT/리팩토링

코드 리팩토링 [과다한 매개변수 / 수정의 산발]

LiStoryTeller 2018. 3. 24. 19:08



이번 포스팅에서 다룰 구린내나는 코드는 과다한 매개변수와 수정의 산발이다.



과다한 매개변수

객체 지향 코드에서는 변수를 객체가 가지고 있다. 즉, 필요한 데이터가 있을 경우, 해당 데이터를 가지고 있는 객체를 통해 얻을 수 있다.


만일 필요한 값이 여러 개이면 여러개의 변수를 객체에서 가져오는 것이 아니라, 하나의 메서드를 통해 가져올 수도 있다.  이때 메서드가 필요로 하는 각종 데이터는 그 메서드가 속한 클래스에 들어있다. 


이렇게 매개변수 세트가 간단한 것은 장점이다. 매개변수 세트가 너무 길면 사용이 불편함은 물론, 필요한 데이터가 늘어날 경우 계속 수정이 필요하기 때문이다. 


데이터를 가지고 있는 객체 하나만 매개변수로 넘길 수 있다면, 필요한 데이터가 늘어나도 모두 객체가 가지고 있기 때문에 매개변수를 수정할 필요가 없어진다.




수정의 산발

소프트웨어는 언제든지 변경될 수 있으므로, 수정하기 쉽게 구성되어야 한다. 수정할 때 개발자는 시스템의 분명한 위치로 곧장 가서 수정할 수 있어야 한다.


만일 하나의 기능을 변경하는데, 여러 메서드를 고쳐야 한다는 것은 좋은 코드가 아니다. 여러 메서드를 고쳐야 할 경우, 어떠한 부분을 고쳐야할 지 알 수 없을 경우가 생길 수 있고, 또한 고치지 못한 부분이 생길 수도 있기 때문이다.


그러므로 하나의 기능을 변경하는데 여러 메서드를 고쳐야 할 경우에는 클래스를 좀더 여러 개의 변형 객체로 분리하는 것이 좋다. 


만일, 여러 메서드를 고쳐야 할 상황이 발생한다면, 특정 원인으로 인해 변경하는 모든 부분을 찾은 뒤 클래스 추출을 적용하여 하나의 클래스로 빼는 것이 좋다. 


물론, 새로운 클래스나 모듈에는 반드시 그 변경사항을 표시해야 한다.

Comments