Categories

  • boring-km

You can also read in Notion

5.1 유사한 클래스 통합하기

  • 반복작업을 자꾸 시켜서 손목이 아프다
  • 비슷한 성격을 가진 두 객체의 동작이 거의 다르지 않다면, 하나로 만들되 if/else 를 사용하지 말고 만들자
  • 책에서는 처음엔 enum으로 바꿨다가 interface로 바꿨는데 이러한 패턴을 “클래스로 타입 코드 대체” 라고 한다.
  • 사실 뭐 이름이 중요한가 싶다. 일일이 외우기 보단 손가락으로 익히는 게 맞는거 같다.

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

5.2 단순한 조건 통합하기

  • if 문 갯수 줄이는 것은 정말 좋은 방법인 것 같다.

절차

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

5.3 복잡한 조건 통합하기

  • 코드 동작에 대한 명확한 이해가 받쳐줘야 가능하다.
  • SRP (단일 책임 원칙)에 따른 메서드를 만드는 걸 목적으로 리팩토링 해보자

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

5.4 클래스 간의 코드 통합

  • 컴포지션을 사용하는 대표적인 디자인 패턴이다.
  • https://stackify.com/oop-concepts-composition/

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

5.5 유사 함수 통합하기

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

5.6 유사한 코드 통합하기

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

  • 전략 패턴 동일하게 사용