[리팩터링 2판] 9장 데이터 조직화 & 10장 조건부 로직 간소화

0

변수 쪼개기

지난 강의에 있는 요거.... charge 를 두번 썼는데,, 쪼갤 수 있지

필드 이름 바꾸기

파생변수를 질의함수로 바꾸기

파생변수를 질의함수로 바꾸기 vs 임시변수를 질의 함수로 바꾸기

  • 공통점: 다른 변수로부터 유도된 변수를 메소드로 추출해낸다는 공통점
  • 차이점:

참조를 값으로 바꾸기 / 값을 참조로 바꾸기

call by reference vs Call by value

참조: 내부 객체는 그대로 둔 채 그 객체의 속성만 갱신

값: 새로운 속성을 담은 객체로 기존 내부 객체를 통째로 대체한다.

매직 리터럴 바꾸기

숫자를 상수로 바꾸기..


10장 조건부 로직 간소화

조건식 조건절 각가 함수로 추출하기

  1. 여러 조건식을 하나로 통합
  2. 해당 조건식을 함수로 추출

조건식 통합하기

  1. 부수 효과가 없는지 확인한다.
  2. 조건문 두 개를 선택하여 결합한다.
  3. 테스트한다, 이 단계에서 '겉보기 동작'이 유지되어야 한다.
  4. 조건이 하나만 남을 때 까지 2~3 과정을 반복한다
  5. 함수로 추출할지 고려해 본다.
  1. 부수 효과가 없는지 확인한다.
    만일 있다면 질의 함수와 변경함수 분리하기 먼저 적용
    (아마도) 모두 질의함수이므로 부수효과 없음
  1. 조건문 두개를 선택하여 결합한다.
  1. 테스트하고,,
  2. 2번 3번 반복
  1. 추출할지 고려해본다: 고고

중첩 조건문을 보호 구문으로 바꾸기

보호 구문

  • 두 경로 모두 정상 동작이라면 if-else문을 사용한다
    한쪽만 정상이라면 비정상 조건을 if 에서 검사한 후 함수에서 빠져나온다.

절차
1. 교체해야 할 조건중 가장 바깥 것을 보호구문으로 바꾼다
2. 테스트한다
3. 1~2번 반복
4. 모든 보호 구문이 같은 결과를 반환한다면 보호 구문들의 조건식을 통합한다.

예시 1번

4번

응용+ 변수 인라인 하기

복잡한 예시 + 테스트의 중요성

이걸 이렇게 바꿀수 있다.

먼저 의료진인지 파악하고,
whenIsNotHealthWorker 함수를 넣는데 , 먼저 증상이
크리티컬하며 적정나이인지,
그리고 30상 아래랑 여자인지
그다음에 시간


특이 케이스 추가하기

모든 기법중에 가장 독특한 기법

목적: 예외적인 단 하나의 그러나 자주 쓰이는 케이스를 클래스의 한 형태로 만들어 버려서
유저 시나리오를 일원화 하기

일단 예시 결론부터 하자면

출처: 리팩토링 2판 제로베이스 유료강의 해설

profile
🇰🇷🇺🇸 #Back-End Engineer

0개의 댓글