당신이 주신 예는 실제로 제 생각에는 괜찮습니다. 당신은 내부 클래스를 선언 하고 있기 때문에, 그것들을 같은 파일 에 보관하는 것은 완벽하게 합리적 입니다. 이 문제를 해결하는 유일한 방법은 Items
수업을 부분 수업으로 만들고 여러 파일로 나누는 것입니다. 나는이 나쁜 습관을 고려할 것입니다. 중첩 클래스에 대한 나의 일반적인 정책은 작고 사적이어야한다는 것입니다. 이에 대한 두 가지 예외가 있습니다.
- 클래스 클러스터를 디자인하고 (객관 -c에서 더 일반적 임) 부분 클래스 접근 방식을 사용하는 것이 합리적 일 수 있습니다
- 부모 클래스의 공용 API에서만 사용되는 열거 형이 필요합니다. 이 경우 네임 스페이스를 오염시키는 대신 부모 클래스 내에 선언 된 공개 열거 형을 선호합니다. 열거 형은 "내부 열거 형"이므로 효과적으로 정의 된 범위를 제공합니다.
질문에 약간 다르게 말하고 "각 네임 스페이스 수준 클래스를 자체 파일에 넣어야합니까?"에 대해 묻는 다면 제 대답은 "예"입니다.
수업을 설계 할 때 우리는 단일 책임 원칙을 존중합니다. 코드의 형태가 의미를 따르는 경우 코드를 읽는 것이 훨씬 쉬워 지므로 파일을 클래스별로 분할하는 것이 좋습니다.
기계적인 관점에서 클래스 당 파일을 갖는 것은 몇 가지 장점이 있습니다. 다른 창에서 여러 클래스를 동시에 열 수 있습니다. 심각한 개발자가 두 개 미만의 화면으로 작업하지 않기 때문에 이것은 특히 중요합니다. 내 머리 앞에서 더 많은 맥락을 가질 수 있다는 것은 내 머리 속에 더 많은 맥락 을 유지할 수 있다는 것을 의미 합니다. (대부분의 IDE에서는 동일한 파일을 두 번 열 수 있지만 어색합니다.)
다음 중요한 측면은 소스 제어 및 병합입니다. 클래스를 별도로 유지하면 별도의 클래스를 변경해야하므로 동일한 파일을 변경할 때 많은 번거 로움을 피할 수 있습니다.