효율적으로 코드를 짜기 위해선 앞서 설명한 네이밍 관련 규칙들과 중복된 코드를 줄이는 것이 중요합니다.
이번 챕터에서는 중복된 코드를 줄일 수 있는 방법론 들을 설명했습니다.
중복코드의 단점은 코드의 변경 시, 동일한 모든 곳의 코드를 변경해야합니다.
이러한 단점을 개선하기 위해 사용할 수있는 리팩토링 기술은 다음과 같습니다.
Extract Funcation ( 함수 추출 )
- 동일한 코드를 여러 메소드에서 사용하는 경우
Slide Statements ( 코드 분리 )
- 비슷하게 생겼지만 완전히 같지는 않은 경우
Pul Up Method( 메소드 올리기 )
- 여러 하위 클래스에 동일한 코드가 있다면 메소드 올리기
1. 함수 추출하기
"의도"와 "구현" 분리하기
의도와 구현?
어떤 일을 하려는지 << 잘 표현하고 있다면 "의도"를 잘 파악하고 있음
잘 표현하고 있지 못하다면 우리가 "구현"을 들여다 보고 있음
내가 과연 이 코드가, 메서드가 어떤 함수인지
- 무슨 일을 하는 코드인지 알아내려고 노력해야하는 코드라면 해당 코드를 함수로분리,
그리고 함수 이름으로 행위를 표현할 수 있음
- 한줄짜리 메소드도 괜찮은가?
거대한 함수 안에 들어있는 주석은 추출한 함수룰 찾는데 있어 좋은 단서가 될 수 있음
2. 코드 정리하기 (Slide statements)
관련있는 코드끼리 묶여있어야 더욱 쉽게 코드를 이해 가능
함수에서 사용할 변수를 상단에 미리 정의하기 보다, 해당 변수를 사용하는 코드 바로 위 선언
관련있는 코드끼리 묶은 다음 함수 추출을 한번 더 하면 더욱 깔끔
3. 메소드 올리기 ( Pull up Method )
중복 코드는 당장 잘 동작하더라도 미래에 버그를 만들어낼 빌미를 제공
여러 하위 클래스에 동일한 코드가 있다면 손쉽게 이 방법을 적용할 수있음
비슷하지만 일부 값만 다른 경우라면 함수 매개변수화 리팩토링을 적용 후 이 방법 사용 가능
하위 클래스에 있는 코드가 상위 클래스가 아닌 하위 클래스 기능에 의존하고 있다면 필드올리기를 적용 한 이후 이 방법을 적용할 수있음
두 메소드가 비슷한 절차를 지니고 있따면 템플릿 메소드 패턴 적용 가능
'Language > Java' 카테고리의 다른 글
[3] 긴 함수 (1) | 2024.01.29 |
---|---|
[1] 이해하기 힘든 이름 (1) | 2024.01.22 |
Reflection(리플렉션)이란? (0) | 2023.04.01 |
객체 지향적 설계? (0) | 2022.11.21 |
문자열 나누기 - StringTokenizer (0) | 2022.08.03 |