중복 코드
똑같은 코드 구조가 두 군데 이상 있을 때 그 부분을 하나로 통일하면 개선할 수 있다.
단순한 예는 한 클래스의 두 메소드 안에 같은 코드가 들어 있는 경우다.
이럴 때는 메소드 추출 기법을 적용해서 겹치는 코드를 빼내어 별도의 메소드로 만들고 그 메소드를 두 곳에서 호출
또, 한 클래스의 두 하위 클래스에 같은 코드가 들어 있는 경우가 있다.
메소드 추출 기법을 적용해서 중복을 없앤 후 메소드 상향 기법을 적용한다.
코드가 같지 않고 비슷하다면, 같은 부분과 다른 부분을 분리한 다음 템플릿 메소드 형성 기법을
알고리즘만 다르다면, 알고리즘 전환 기법을
중복코드가 중간에 있다면 주변 메소드 추출 기법을 적용한다.
서로 상관없는 두 클래스 안에 중복 코드가 있다면, 모듈 추출로 제3의 클래스로 생성해서 호출하거나
한 클래스에서만 메소드를 생성해 다른 클래스에서 그 메소드를 호출할 수도 있다.
지금 업무를 맡아 진행하고 있는 프로젝트에서도 중복 코드가 많은데...
참고해서 하나로 통일한다고 하면, 유지 보수에 있어서도 신규 개발건에 있어서도
해당 내용에 대해서 수정을 할 때 보다 효과적으로 작용할 수 있을 것 같다. 반성하자. ㅠㅠ
장황한 메소드
메소드의 목적을 구분하기 위해서 메소드의 목적이 메소드명에서 나타나야 한다.
즉, 기능 수행 방식이 아니라 목적 그 자체를 이름을 정한다. 메소드명이 길어지는 한이 있어도 그러하다.
메소드의 기능과 기능 수행 방법은 서로 다른 의미이기 때문이다.
메소드를 줄이기 위해서는 메소드 추출 기법을 적용해야 한다. 메소드에서 공통으로 처리할 수 있는 부분에 대해서 메소드를 생성하는 것이다. 임시 변수나 매개변수가 너무 많다면 메소드 객체 전환 기법을 적용한다.
지금 개발을 하면서도 변수명이나 메소드명, 테이블명, 컬럼명 등 명확하게 정하지 못하는 것 같다.
이름 짓기 너무 힘들다.
방대한 클래스
기능이 많은 클래스에는 많은 인스턴스 변수가 존재할 것이고, 중복 코드도 반드시 존재하게 마련이다.
서로 연관된 변수에 대해서 하위 클래스로 추출해서 클래스 멤버 변수로 사용한다.
'IT > 리팩토링' 카테고리의 다른 글
[리팩토링] 메소드 삽입 (0) | 2019.10.25 |
---|---|
[리팩토링] 메소드 추출 (0) | 2019.10.25 |
[리팩토링] 클래스 멤버변수 이동 (0) | 2019.10.25 |
[리팩토링] 객체간 메소드 이동 (0) | 2019.10.25 |
[리팩토링] 메소드를 메소드 객체로 전환 (0) | 2019.10.25 |