목록IT/리팩토링 (9)
LISTORY
기능의 산재 저번 포스팅에 수정의 다발은, 하나의 기능을 고칠 때 고쳐야 할 부분이 많은 코드의 문제점이라 말하였다. 하지만 이번 기능의 산재 부분을 보면서 잘못 설명했다는 것을 알게되어 정정하겠다. 수정의 다발은 클래스를 다양한 원인 때문에 다양한 방식으로 수정해야 하는 것이다. 이럴 때엔 그 클래스를 여러 개의 변형 객체로 분리하는 것이 좋다. 하나의 기능을 고칠 때 고쳐야할 부분이 많은 것은 오늘 설명할 기능의 산재이다. 기능의 산재를 해결하기 위해선 메서드 이동과 필드 이동을 적용해야 한다. “메서드 이동”메서드가 자신이 속한 클래스보다 다른 클래스의 기능을 더 많이 이용하면 메서드를 다른 클래스로 옮기거나, 비슷한 메서드를 클래스에 생성한다. “필드 이동”어떤 필드가 자신이 속한 클래스보다 다른..
이번 포스팅에서 다룰 구린내나는 코드는 과다한 매개변수와 수정의 산발이다. 과다한 매개변수객체 지향 코드에서는 변수를 객체가 가지고 있다. 즉, 필요한 데이터가 있을 경우, 해당 데이터를 가지고 있는 객체를 통해 얻을 수 있다. 만일 필요한 값이 여러 개이면 여러개의 변수를 객체에서 가져오는 것이 아니라, 하나의 메서드를 통해 가져올 수도 있다. 이때 메서드가 필요로 하는 각종 데이터는 그 메서드가 속한 클래스에 들어있다. 이렇게 매개변수 세트가 간단한 것은 장점이다. 매개변수 세트가 너무 길면 사용이 불편함은 물론, 필요한 데이터가 늘어날 경우 계속 수정이 필요하기 때문이다. 데이터를 가지고 있는 객체 하나만 매개변수로 넘길 수 있다면, 필요한 데이터가 늘어나도 모두 객체가 가지고 있기 때문에 매개변수..
저번 포스팅에 이어 이번 포스팅에서는 어떠한 경우에 어떻게 코드를 리팩토링 해야하는지에 대해 다뤄보겠다. 오늘 다룰 내용은 중복 코드, 장황한 메서드, 방대한 클래스이다. 중복 코드아무래도 가장 흔한 코드의 구린내가 아닐까 싶다. 나도 아직 잘 고치지 못한 부분이다. 중복 코드는 똑같은 코드 구조나 기능이 두 군데 이상 있을 경우를 말하고, 이를 하나로 통일하는 리팩토링이 필요하다. 중복 코드의 여러가지 예제를 다루어 보겠다. ① 한 클래스의 두 메서드 안에 같은 코드가 들어있는 경우 말 그대로 한 클래스내의 두 메서드에 중복되는 코드가 있는 경우이다. 이때는 메서드 추출이라는 기법으로 해결할 수 있다. “메서드 추출”메소드 안에 코드를 빼내어 그 코드로 다른 메서드를 만드는 것 메세드 추출 방법을 간단..
리팩토링이란 무엇인가 리팩토링은 두 가지 의미로 쓰인다.1. 겉으로 드러나는 기능은 그대로 둔 채, 알아보기 쉽고 수정하기 간편하게 소프트웨어 내부를 수정하는 작업2. 리팩토링 기법을 연달아 적용하여 겉으로 드러나는 기능은 그대로 둔 채 소프트웨어 구조를 변경한다. 결국 리팩토링이란 SW의 기능에는 영향을 주지 않지만, 내부 코드를 보기 쉽고 수정하기 간편하게 변경하는 작업을 말한다. SW 작업을 할 시에는 이 리팩토링 작업과 코드 추가 작업, 크게 두개로 분류할 수 있다.이 두 가지 작업은 병행되지 않고 하나의 작업이 끝났을 때 다른 작업을 수행해야 한다.즉, 코드 추가 작업이 끝난 다음 리팩토링 작업이 진행되어야 하며, 리팩토링 작업이 끝난 이후에 또 다른 코드 추가 작업이 이루어져야 한다. 리팩토링..