거대한 클래스/메서드의 경우
질문하신 내용이 사실 이번 강의 전체에 걸쳐서 나오는 핵심적인 내용입니다. 좋은 코드를 만든다는 것은 결국 좋은 함수(메서드)를 만드는 거라고 요약할 수 있고, 좋은 함수를 만드는 기준이 아마도 질문하신 내용에 대한 답이 되겠지요. 그래서, 강의 흐름을 따라가다보면 자연스럽게 답을 얻으실 수 있을 거라고 생각합니다만, 그래도 간단하게 제 관점을 설명해 보겠습니다.우선, 적절한 함수의 크기, 함수를 언제, 어떻게 쪼개야 할 것인가에 대해서 저는 변수를 기준으로 많이 둡니다. 특히 지역변수 할당이 많거나, 인자가 많으면 함수의 역할을 적절하게 나눠야 하는 시점이라고 보구요. 나누는 방향도 변수 할당을 줄이거나 인자의 개수를 줄일 수 있는 방향을 먼저 봅니다.메서드는 여기에 멤버 변수라는 기준이 추가됩니다. 주로 사용하는 변수가 그 메서드가 속한 클래스의 멤버라면 별 문제 없는 상황인데, 다른 클래스의 멤버 변수나 메서드를 많이 호출한다면 메서드가 속한 위치를 변경하거나 일부분 분리해야 한다는 신호일 수 있습니다.반대로, 그런 요인이 없다면 단순히 클래스가 크다는 이유로 메서드를 다른 클래스로 분리하진 않습니다. 예로 드신 CRUD를 담당하는 서비스라면 굳이 R과 CUD로 나누지 않을 것 같습니다. 그보다는 R이 왜 복잡해졌는지를 좀더 분석해보고 분리할 수 있는 부분을 찾아내려고 할 것 같습니다.이렇게 분리할 때도 그냥 코드 일부분을 그대로 extract method하게 되면 더 구조를 나쁘게 만들 수 있기 때문에, extract method를 하고 나서 변수를 줄일 수 있는지, public으로 해도 유익한 메서드가 될 수 있는지 등을 따져봅니다.이런 관점에서 제 강의를 바라봐주시면 감사하겠습니다.