5.1 유사한 클래스 통합하기

https://github.com/FiveLinesofCodeStudy/2D-Puzzle-Compose/commit/e9b2b43b5f101de142aaf656edcc2e6365af320e

유사 클래스 통합 절차

  1. 모든 비기준 메서드를 동일하게 만드는 것
    1. 각 메서드 버전 본문의 기존 코드 주위에 if (true) {}를 추가한다.
    2. true를 모든 기본 메서드를 호출하여 그 결과를 상수 값과 비교하는 표현식으로 바꾼다.
    3. 각 버전의 본문을 복사하고 else와 함께 다른 모든 버전에 붙여 넣는다.
  2. 기준 메서드에 대한 필드를 도입하고 생성자에서 상수를 할당하는 것으로 시작한다.
  3. 상수 대신 도입한 필드를 반환하도록 메서드를 변경한다.
  4. 문제가 없는지를 확인하기 위해 컴파일
  5. 각 클래스에 대해 한 번에 하나의 필드씩 다음을 수행한다.
    1. 필드의 기본값을 매개변수로 지정하게 한다.
    2. 컴파일러 오류를 살펴보고 기본값을 인자로 전달한다.
  6. 모든 클래스가 동일하면 통합한 클래스 중 하나를 제외한 모두를 삭제하고, 삭제하지 않은 클래스로 바꾸어 모든 컴파일러 오류를 수정한다.

5.2 단순한 조건 통합하기

절차

  1. 본문이 실제로 동일한지 확인한다.
  2. 첫 번째 if 문의 닫는 괄호와 else if 문의 여는 괄호 사이의 코드를 선택하고 삭제한 후 ||을 삽입한다. if 뒤에 여는 괄호를 삽입하고 { 앞에 닫는 괄호를 삽입한다. 동작을 변경하지 않도록 항상 표현식을 괄호로 묶는다.

5.3 복잡한 조건 통합하기