profile image

L o a d i n g . . .

1. 함수 추출하기

코드를 언제 독립된 함수로 묶어야 할까?

많은 의견들이 있지만, 저자는 '목적과 구현을 분리'를 기준으로 추천한다.

코드를 보고 무슨 일을 하는지 파악하는데 한 참을 걸린다면 그 부분을 함수로 추출한 뒤 '무슨 일' 에 걸맞는 이름을 짓는다.
이렇게 해두면 나중에 코드를 다시 읽을 때 함수의 목적이 눈에 확 들어오고, 본문 코드(그 함수가 목적을 이루기 위해 구체적으로 수행하는 일)에 대해서는 더 이상 신경 쓸 일이 없다.

함수를 새로 만들고 이름을 붙일 때 "어떻게" 가 아닌 "무엇을" 하는지가 드러나는 이름을 짓도록 주의하자. 목적을 잘 드러내는 이름을 붙여야 한다.

2. 함수 인라인하기

때로는 함수 본문이 이름만큼 명확한 경우도 있다.
리팩터링 과정에서 잘못 추출된 함수들, 간접 호출을 너무 과하게 쓰는 코드도 인라인 대상이다.

가령 다른 함수로 단순히 위임하기만 하는 함수들이 너무 많아서 위임 관계가 복잡하게 얽혀 있으면 인라인해버린다.

3. 변수 추출하기

지역 변수를 활용해, 표현식을 쪼개 관리하기 쉽게 한다.

4. 변수 인라인하기

3번의 반대

5. 함수 선언 바꾸기

함수의 이름, 매개변수
좋은 함수 이름이 떠오른다면 바로 바꾸자.
매개변수를 통해 함수의 활용 범위, 다른 모듈과의 결합 등이 결정된다. 잘 정의하자

6. 변수 캡슐화하기

변수로의 접근과 갱신을 전담하는 캡슐화 함수들을 만든다.

7. 변수 이름 바꾸기

8. 매개변수 객체 만들기

매개변수에 들어갈 적당한 클래스 혹은 객체를 만든다.

데이터 항목 여러 개가 이 함수에서 저 함수로 몰려다니는 경우, 데이터 구조 하나로 모아주는 것.

9. 여러 함수를 클래스로 묶기

(흔히 함수 호출 시 인수로 전달되는) 공통 데이터를 중심으로 긴밀하게 엮여 작동하는 함수 무리 -> 클래스 하나로 묶기

프로그램의 다른 부분에서 데이터를 갱신할 가능성이 꽤 있을 때는 클래스로 묶어두면 큰 도움이 된다.

10. 여러 함수를 변환 함수로 묶기

데이터를 입력받아 여러 가지 정보를 도출할 때, 도출 로직이 반복된다면 이를 한데로 모아두자. 모아두면 검색과 갱신을 일관된 장소에서 처리할 수 있고, 로직 중복도 막을 수 있다.

11. 단계 쪼개기

서로 다른 두 대상을 한꺼번에 다루는 코드를 발견하면, 각각을 별개 모듈로 나누는 방법을 모색한다.

복사했습니다!