[file] 동일한 파일에 여러 클래스를 갖는 것이 나쁜 습관입니까?

한 파일에 대해 하나의 클래스를 사용했습니다. 예를 들어 car.cs 에는 car 클래스가 있습니다 . 그러나 더 많은 클래스를 프로그래밍함에 따라 동일한 파일에 추가하고 싶습니다. 예를 들어 car.cs 에는 car 클래스 와 door 클래스 등이 있습니다.

내 질문은 Java, C #, PHP 또는 기타 프로그래밍 언어에 적합합니다. 동일한 파일에 여러 클래스를 포함하지 않아야합니까, 아니면 괜찮습니까?



답변

코드를 파일 당 1 개의 클래스로 유지해야한다고 생각합니다.

나중에 수업을 더 쉽게 찾을 수 있기 때문에 이것을 제안합니다. 또한 소스 제어 시스템에서 더 잘 작동합니다 (파일이 변경되면 특정 클래스가 변경되었음을 알 수 있습니다).

파일 당 두 개 이상의 클래스를 사용하는 것이 옳다고 생각하는 유일한 경우는 내부 클래스를 사용할 때입니다. 그러나 내부 클래스는 다른 클래스 내에 있으므로 동일한 파일에 남아있을 수 있습니다. 내부 클래스 역할은 외부 클래스와 밀접한 관련이 있으므로 동일한 파일에 배치하는 것이 좋습니다.


답변

Java에서는 파일 당 하나의 공용 클래스가 언어가 작동하는 방식입니다. Java 파일 그룹을 패키지로 수집 할 수 있습니다.

그러나 Python에서 파일은 “모듈”이며 일반적으로 밀접하게 관련된 여러 클래스가 있습니다. Python 패키지는 Java 패키지와 같은 디렉토리입니다.

이것은 파이썬에게 클래스와 패키지 사이에 추가적인 수준의 그룹화를 제공합니다.

언어에 구애받지 않는 정답은 없습니다. 언어에 따라 다릅니다.


답변

파일 당 하나의 클래스가 좋은 규칙이지만 몇 가지 예외를 만드는 것이 적절합니다. 예를 들어, 대부분의 클래스에 관련된 컬렉션 유형이있는 프로젝트에서 작업하는 경우 클래스와 컬렉션을 동일한 파일에 보관합니다. 예 :

public class Customer { /* whatever */ }

public class CustomerCollection : List<Customer> { /* whatever */ }

경험상 가장 좋은 규칙은 파일 당 하나의 클래스를 유지하는 것입니다. 단, 작업이 더 어려워지기 시작하는 경우를 제외하고는 예외입니다. Visual Studio의 파일에서 찾기는 매우 효과적이기 때문에 어쨌든 파일 구조를 살펴 보는 데 많은 시간을 할애 할 필요가 없을 것입니다.


답변

아니요, 전적으로 나쁜 습관이라고 생각하지 않습니다. 내가 의미하는 것은 일반적으로 클래스마다 별도의 파일을 갖는 것이 가장 좋지만 한 파일에 여러 클래스를 갖는 것이 더 좋은 예외 사례가 분명히 있다는 것입니다. 이에 대한 좋은 예는 Exception 클래스 그룹입니다. 주어진 그룹에 대해 이러한 클래스가 수십 개있는 경우 각 2 개의 라이너 클래스에 대해 별도의 파일을 갖는 것이 실제로 합리적입니까? 나는 주장하지 않을 것입니다. 이 경우 한 클래스에 예외 그룹을 갖는 것은 훨씬 덜 번거롭고 간단한 IMHO입니다.


답변

여러 유형을 하나의 파일로 결합하려고 할 때마다 쉽게 찾을 수 있기 때문에 항상 뒤로 돌아가서 분리하는 것을 종료합니다. 내가 결합 할 때마다 내가 정의한 유형 x를 알아 내려는 순간이 항상 있습니다.

이제 내 개인적인 규칙은 각 개별 유형 (아마도 상속 된 클래스가 아닌 클래스 내부의 클래스를 의미하는 하위 클래스 제외)이 자체 파일을 가져 오는 것입니다.


답변

IDE 에서 ” Navigate to “기능을 제공하고 클래스 내에서 네임 스페이스를 제어 할 수 있기 때문에 동일한 파일 내에 여러 클래스를 갖는 아래의 이점은 저에게 상당히 가치가 있습니다.

부모-자식 클래스

대부분의 경우 기본 클래스 파일 내에 상속 된 클래스 가있는 것이 매우 유용 합니다.

그러면 자식 클래스가 상속하는 속성과 메서드를 쉽게 확인할 수 있으며 파일은 전체 기능에 대한 빠른 개요를 제공합니다.

공개 : 소규모-도우미-DTO 클래스

특정 기능을 위해 여러 개의 평범 하고 작은 클래스 가 필요할 때 모든 참조가있는 파일이 있고 4-8 Liner 클래스를 포함하는 것이 상당히 중복된다는 것을 알았습니다 …..

코드 탐색 은 또한 10 개의 파일 사이를 전환하는 대신 하나의 파일 위로 스크롤하기 만하면 더 쉽습니다. 또한 10 개가 아닌 하나의 참조 만 편집해야 할 때 리팩토링 하기가 더 쉽습니다 …..

전체적으로 파일 당 클래스 1 개의 Iron 규칙을 위반하면 코드를 구성 할 수 있는 추가적인 자유 가 제공 됩니다.

그때 일어나는 일은 실제로 IDE, 언어, 팀 커뮤니케이션 및 조직 기술에 달려 있습니다.

하지만 그 자유를 원한다면 왜 철칙을 위해 희생해야합니까?


답변

팀에서 작업하는 경우 클래스를 별도의 파일에 보관하면 소스를 더 쉽게 제어하고 충돌 가능성을 줄일 수 있습니다 (여러 개발자가 동시에 동일한 파일을 변경 함). 찾고있는 코드를 더 쉽게 찾을 수 있다고 생각합니다.