Closed FickleBoBo closed 6 months ago
내부 클래스 없이 printCount()를 직접 호출하면 클래스 간의 결합도가 더 높아집니다. 아마도 하시고 싶었던 말씀은 멤버 클래스를 두지 않아도 되서 클래스가 만들어 지지 않기 때문에 오히려 결합도가 없어지지 않느냐? 라는 뜻인것 같습니다. 이렇게 하면 Helper 클래스를 만들 필요가 없습니다. 하지만 outerclass에 다양한 메서드와 필드값이 생기고 프로그램이 복잡해지고 기능이 확장될 경우, 그중 일부의 메서드와 필드값을 공통적으로 사용하는 helperMethod1(), helperMethod2(), helperMethod3() 이 있다고 할때 그 일부의 메서드와 필드값을 Helper 클래스로 만들어 사용하는것이 코드를 더 구조화하고 유지보수하기 쉽게 만들 수 있습니다. 또한 코드를 더욱 모듈화하고 각 클래스의 역할을 명확히 할 수 있습니다
클래스의 필드값과 메서드를 공통으로 사용하는 경우가 많아질 경우를 생각하지 못했는데 예시로 주신 helperMethod1(), helperMethod2(), helperMethod3()와 같은 경우가 발생한다면 충분히 내부 클래스를 두는 것이 좋을 수 있을 것 같습니다!! 클래스 간의 결합도라는 표현에만 집중했던 것 같은데 내부 클래스를 통해 좀 더 구조화를 할 수 있다는 점이 내부클래스의 장점 중 하나인 것 같습니다. 어려운 주제였던 것 같은데 고생많으셨습니다~!!
Based on: #101 by @ssh2957
이번 주도 좋은 글 작성해주셔서 잘 읽어보았습니다. 알고리즘 문제들을 풀며 Node라는 정적 멤버 클래스를 사용해서 문제를 해결하곤 했었는데 이에 대한 아이템이 나와서 반가웠습니다. Node 클래스의 특성상 Node에서 외부 클래스에 접근할 일이 없었는데 이번 아이템을 보며 정적 멤버 클래스의 장점을 잘 살려 사용하고 있었나 하는 생각이 듭니다.
작성해주신 내용 중 private(public) 도우미 클래스에 대한 내용이 이해하기 어려웠었는데, 저는 p146
Calculator.Operation.PLUS
예시를 통해 코드의 가독성을 높이는데 가치가 있는 것으로 생각했습니다.(정적 팩터리 메서드가 생성자 대비 갖는 장점 중 하나처럼) 또한, 메서드에서 다른 메서드를 호출하는 구조로 짜고 싶을 때, 정적 멤버 클래스를 활용하면 메서드의 기능을 코드에서 온전히 보기 좋을 것으로 생각됩니다.(나열식으로 작성할 수 있어서)예시 코드로 올려주신 도우미 클래스를 보면
helperMethod()
가 OuterClass에 정의되어있고, 다시 정적 멤버 클래스 HelperClass 객체를 생성해 메서드를 호출하고 있는 것으로 보입니다. 이 경우에서 도우미 클래스가 어떤 장점을 갖는지 파악하기 어려워서 도우미 클래스로써 어떤 기능이 있는 것인지 @ssh2957 님의 의견이 궁금합니다.내부 클래스없이도 바로
printCount()
를 호출함으로서 멤버 클래스를 두지 않아도 되서 오히려 클래스간 결합도가 올라가는 것이 아닌가 생각합니다.