LISTORY

코드 리팩토링 [ 기능의 산재 ] 본문

IT/리팩토링

코드 리팩토링 [ 기능의 산재 ]

LiStoryTeller 2018. 4. 1. 02:33



기능의 산재


저번 포스팅에 수정의 다발은, 하나의 기능을 고칠 때 고쳐야 할 부분이 많은 코드의 문제점이라 말하였다.


하지만 이번 기능의 산재 부분을 보면서 잘못 설명했다는 것을 알게되어 정정하겠다.


수정의 다발은 클래스를 다양한 원인 때문에 다양한 방식으로 수정해야 하는 것이다. 


이럴 때엔 그 클래스를 여러 개의 변형 객체로 분리하는 것이 좋다.


하나의 기능을 고칠 때 고쳐야할 부분이 많은 것은 오늘 설명할 기능의 산재이다.


기능의 산재를 해결하기 위해선 메서드 이동과 필드 이동을 적용해야 한다.


“메서드 이동”

메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 이용하면 메서드를 다른 클래스로 옮기거나, 비슷한 메서드를 클래스에 생성한다.


“필드 이동”

어떤 필드가 자신이 속한 클래스보다 다른 클래스에서 더 많이 사용될 때, 다른 클래스 안에 새 필드를 선언하고 필드 참조 부분을 새 필드 참조로 수정한다.


존재하는 클래스 중, 어느 것에 넣기에도 부적절해 보일 때엔 새로운 클래스를 생성하여 적용할 수 있다.


이런 방식으로, 수정이 필요할 경우엔 하나의 클래스만 수정할 수 있도록 해야한다.







Comments