Categories

  • shinequasar

5장 유사한 코드 융합하기

실습 중인 레포

https://github.com/FiveLinesofCodeStudy/five-lines-soyeon.git

5-1 유사한 클래스 통합하기

  •   로 묶인 상태를 하나의 함수로 묶으니 가독성이 좋아졌다. 변수명으로 바로 유추 가능
  • 앞에서 다양한 메서드들을 쪼개고, 클래스들도 많이 만들어 놨어서 왜 이렇게 나누지 의문이 좀 있었는데(중복된 기능들을 반복해서 사용하는 모습이 의문스러웠었음) 5장을 위해서 이렇게 했구나 싶음.
  • 유사한 메서드나 기능을 if 불리언으로 합치고, 그걸 다시 .is~~~() 형태로 클래스에 내재화 해서 한 클래스에 모은 후 비슷한 클래스를 삭제해 합치는 과정이 나와서 마음이 편해졌다.
  • 이 과정에서 생성자를 활용하여 초기 상태를 정하는 것도 잘 활용해볼 수 있을 것 같다.

5-1-1 리팩토링 패턴 : 유사 클래스 통합

  • 트래픽 예제로 다시한번 복습

5-2 단순한 조건 통합하기, 리팩토링 패턴 : if문 결합

  • 당연하게 써오던 같은 본문은 합친다~! 를 다시한번 강조
  • 5-1에서 언급한 ‘   로 묶인 상태를 하나의 함수로 묶기’ 같은 방법은 코드를 연구하지 않아도 리팩토링할 수 있는 패턴이라는 점이 공식같아서 새로운 시각을 가지게 되었다.

5-3 복잡한 조건 통합하기

  • 코드는 다르지만 논리적으로 같은 부분을 같은 코드로 바꾸고, 그 메서드 두 개를 합치는 방법
  • 이 부분은 코드의 의미를 어느정도 파악한 후에 적용할 수 있는 기법인 듯하다.
  • 맡고있는 프로젝트에 대한 이해가 높아지면 적용해봐도 좋을 듯.

5-3-1 조건을 위한 산술규칙 사용

  • 코드를 덧셈법칙, 곱셈법칙처럼 수식의 모습으로 사고하는 방식이 인상깊었다.
  • 이 부분은 당장 적용해볼 수 있을 것 같아서 조건을 고려할 때 바로 도입해봐야겠다는 생각을 했다. ``` //변경 전 if(map[y][x].isStony() && map[y][x].isAir()) || map[y][x].isBoxy() && map[y][x].isAir()) { … }

//변경 후 if((map[y][x].isStony() || map[y][x].isBoxy()) && map[y][x].isAir()) { … } ```