나는이 규칙을 따르지만 일부 동료들은 이에 동의하지 않고 수업이 더 작 으면 다른 수업과 같은 파일에 남을 수 있다고 주장합니다.
내가 항상 듣는 또 다른 주장은 “마이크로 소프트도 그렇게하지 않는 이유는 무엇입니까?”
이것에 대한 일반적인 합의는 무엇입니까? 이것을 피해야하는 경우가 있습니까?
답변
파일 당 하나의 클래스는 또한 파일의 차이점을 보지 않고 각 체크인이 무엇을 변경하는지에 대한 더 나은 아이디어를 제공합니다.
답변
나는 사람들이 절대적으로 생각하고 당신이 이것과 같은 주관적이고 엄청나게 까다로운 것을 사용해서는 안된다고 말할 때 그것을 싫어합니다. 결론 : 파일 당 하나 이상의 클래스를 갖는 것이 의미가 있다면 완전히 좋습니다. 이해하기 쉬운 의미는 다음과 같습니다.
- 코드를보다 쉽게 요약하고 관리 할 수 있습니다
- 솔루션을 덜 성가 시게 만들고 (수 많은 불필요한 파일을 스크롤 함) 느리게 만듭니다
- 개발자 팀은 로컬 코딩 연습으로 괜찮습니다.
파일 당 여러 클래스를 원하는 이유에 대한 좋은 예 :
수십 개의 사용자 정의 예외 클래스가 있는데 각 클래스는 4 라이너이며, 각각에 대해 별도의 파일을 가질 수 있거나 예외를 그룹화하고 그룹 당 파일을 가질 수 있습니다. 나에게 가장 합리적인 / 실용적인 접근 방식은 그룹화하는 것입니다. 시간 / 코딩이 더 효율적이기 때문에 파일이 몇 개뿐입니다 (마우스 오른쪽 버튼을 클릭 할 필요가 없습니다-> 클래스 추가, 이름 바꾸기, 50 번) 따라서 솔루션의 혼란을 줄이고 성능을 향상시킵니다.
답변
static bool GeneralRuleShouldBeFollowed(IGeneralRule rule, IUseCase useCase)
{
return (rule.Overhead(useCase)
< My.PersonalThresholds.ConformismVsPracticality);
}
답변
나는 그들이 밀접하게 결합되어 있고 그 중 적어도 하나가 매우 작은 경우 파일에서 둘 이상의 클래스를 그룹화합니다.
일반적인 ‘모범 사례’는 수업 당 하나의 파일을 갖는 것입니다.
답변
가상의 주장을 넘어서 Visual Studio IDE를 사용하는 Windows .NET에 집중하고 소프트웨어 프로젝트를 늘리는 것 외에도 파일 당 하나의 클래스를 갖는 것이이 맥락에서 의미가 있습니다.
일반적으로 시각적 참조의 경우 파일 당 하나의 클래스를 능가하지 않습니다. 정말.
나는 Microsoft가 똑같이하지 않는지 알지 못하지만 하나의 클래스를 여러 파일 로 나누기 위해 partial
키워드 를 만들었습니다 (더 심각합니다). 자동 생성 된 디자이너 코드를 동일한 클래스 의 사용자 정의 코드에서 분리하는 데 종종 사용됩니다 (그러나 때로는 다른 개발자가 다른 파일을 통해 동시에 클래스에서 작업 할 수 있도록하는 데 사용됨). 따라서 Microsoft는 여러 파일의 이점을보고 있으며 .NET을 사용하면 누구나 여러 파일 구성을 염두에두고 있습니다.
중첩 클래스의 경우 하나의 파일 또는 적어도 클래스의 첫 번째 부분을 사용하는 것 외에는 선택의 여지가 없습니다. 이 경우 하나의 파일이 필요하고 훌륭합니다.
class BicycleWheel {
class WheelSpoke {
}
}
그렇지 않으면 왜 하나의 파일에 여러 클래스를 유지합니까? “작기 때문에” 또는 서로 연관되어 있다는 주장 은 결국 많은 수업이 다른 수업과 관련되기 때문에 많은 물을 보유하지 않습니다 . 궁극적으로 특히 소프트웨어가 계속 성장함 에 따라 객체 사용을 기반으로 파일 내 오브젝트 구성을 쉽게 유추 할 수 없습니다 .
또한 네임 스페이스에 폴더를 사용 하면 클래스 파일 이름 충돌이 발생하지 않습니다. 또한 Visual Studio와 같은 개발 환경에 있지 않을 때 파일 시스템에서 파일 이름으로 클래스 를 찾는 것이 편리합니다 (예 : 메모장 또는 빠른 / 가벼운 것을 사용하여 클래스를 빠르게 편집하려는 경우 ).
많은 이유가 있습니다 …
답변
대부분의 경우 파일 규칙 당 하나의 클래스를 따릅니다. 내가 정기적으로하는 유일한 예외는 특정 클래스와 밀접하게 연결된 열거 형의 정의입니다. 이 경우에는 해당 클래스 파일에 열거 형 정의를 자주 포함시킵니다.
답변
나도 단일 파일에 하나의 유형이 포함되어야한다고 생각합니다.
이 규칙에는 한 가지 예외가 있습니다. 다음과 같은 일반적인 인수로만 다른 두 클래스가 있습니다.
RelayCommand
과
RelayCommand<T>