리팩토링 5. 코드 정리하기
- etc/리팩토링
- 2023. 4. 27.
리팩토링 5. 코드 정리하기 (Slide Statements)
- 관련있는 코드끼리 묶여있어야 코드를 더 쉽게 이해할 수 있다.
- 함수에서 사용할 변수를 상단에 미리 정의하기 보다는 해당 변수를 사용하는 코드 바로 위에 선언하자.
- 관련있는 코드끼리 묶은 다음 함수 추출하기 (Extract Function)를 사용해서 더 깔끔하게 분리할 수도 있다.
Slide Statements란?
관련있는 코드들을 가까이 두기 위해서 코드를 아래 위로 움직이는 것을 의미한다. 관련있는 코드들은 서로 가까이 두어야 이해하기 더 쉽기 때문이다. Slide Statement는 다른 리팩토링 기법을 적용하기 전에 관련있는 코드들을 서로 가까이두어 리팩토링 하기 쉽도록 만들어 주는 전 처리 작업이다.
예를 들어 관련있는 코드끼리 뭉쳐주다보면 공통된 코드가 생성되는 경우가 있고, 이 경우 하나의 메서드로 추출할 수 있게 된다. 즉, 코드를 아래 위로 움직인 후에 '함수 추출하기' 기법을 적용할 수 있게 되는 것이다.
변수 상단에 모두 선언 vs 사용하는 곳 직전에 선언
Slide Statement와 관련있는 것 중 하나다. 변수를 상단에 모두 선언하는 것과 사용하는 곳 직전에 선언하는 것에는 어떤 차이가 있을까?
메서드의 상단에 모든 변수를 정의하는 것은 코드를 읽기 어렵게 만든다. 이 코드를 읽는 개발자는 상단에 선언된 변수를 계속 기억하면서 읽어야 하기 때문이다. 반면 해당 변수가 사용되기 직전에 변수가 선언되면 조금 더 읽기 쉬워진다. 이처럼 변수 선언과 사용하는 부분이 붙어있게 되면 코드가 '덩어리화'되고, 이는 가독성 좋은 코드를 제공하게 된다.
아래 예시를 살펴보자.
위 이미지는 상단에 모든 변수를 선언한 경우다. 이상한 부분은 다음과 같다.
리뷰어 변수가 생성되었다. 그런데 갑자기 Github 연결을 하고, Github 이슈를 가져온다.
틀린 코드는 아니지만 문맥을 이해하기 어려워진다.
반면 리뷰어 변수를 사용하기 전에 생성하면 이상했던 부분이 제거된다. 또한 메서드 내부의 각 코드마다 덩어리 형태로 각자의 뜻을 가지게 된다. 예를 들어서 다음 덩어리가 생성된다.
- Get github issue to check homework
- get reviewers
- Print reviewers
정리
- 변수는 사용하기 직전에 선언해야 가독성이 좋고, 의미있는 코드 단위로 묶이게 된다.
'etc > 리팩토링' 카테고리의 다른 글
리팩토링 17. 변수 캡슐화하기 (0) | 2023.04.27 |
---|---|
리팩토링 : 냄새 5 - 전역 데이터 (0) | 2023.04.27 |
리팩토링6. 메서드 올리기 (0) | 2023.04.27 |
리팩토링 4. 함수 추출하기 (0) | 2023.04.27 |
리팩토링 냄새 2. 중복코드 (0) | 2023.04.27 |