효과적인 리팩토링을 위해 반대로 좋고 커다란 설계가 어떤 모습인지 이해해야한다.
중복의 양을 최소화 하고(낮은 중복성), 높은 명확성을 목표로 코드를 리팩토링 해야한다.


👉🏻 할당 부분을 별도의 메서드로 추출하여 복잡성을 고립시킨다.
반복문에는 단순한 선언문만 남으므로 match 변수는 조건이 답변에 맞는지 여부만 나타낸다.
변경 전

변경 후

Profile.java

Criterion.java
👉🏻 matches 메서드가 Profile 클래스와는 상관없으므로 Criterion이라는 클래스로 이동해준다.


1 : answerMatching이라는 메서드로 로직 분리해줌.
2 : 해당 반복문에서 answer은 한번만 쓰이므로 matches에 인라인함.

수동으로 넣어도 되고 Refactor > Inline메뉴를 통해 inline 할 수도 있다. (Intellij 단축키 : ctrl + Alt + N)

👉🏻 앞의 소스가 세개의 새로운 메서드, 반복문으로 변경되었다.