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()) { … } ```