사용 / 가져 오기 문이 많으면 디자인 또는 코드 냄새가 나쁘다는 것을 나타 냅니까?


13

일반적으로 클래스 파일 맨 위에 몇 개의 using 문이 있습니다. 예:

using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;

그러나 내가 작업중 인 프로젝트에서 여러 경우에 하나의 클래스 파일에서 20 개 이상의 사용 / 가져 오기를 볼 수 있습니다. 이 나쁜 디자인입니까? 한 가지 작업을 수행하도록 설계된 클래스는 소수의 구성 요소에만 의존해야합니다.


1
Visual Studio에는 사용되지 않는 using문 을 제거하는 옵션이 있습니다. 실제로 사용중인 20 개 중 몇 개를보고 싶을 수도 있습니다.
Dan Pichelman

@ Dan-사용하지 않는 것들을 제거하기 위해 ReSharper를 사용했기 때문에 모두 사용 중입니다.
Jon Raynor

IoC 추가, 생성자 주입으로 변환 및 / 또는 일부 통합 지점을 인라인 람다로 변환 using하여 클래스 수를 늘리지 않고도 명령문 수를 줄이려고 시도 했습니까? 클래스 또는 소스 파일 수가 증가하면 소스 코드 관리 오버 헤드가 증가합니다.
rwong

2
IoC는 문제를 숨 깁니다.
Telastyn

1
이러한 것들 중 일부는 Collections.Generic 및 LINQ와 같이 권장 언어 및 프로그래밍 스타일의 일부에 불과하므로 반드시 걱정할 필요는 없습니다. 아마도 다른 사람들에게 관심을 집중할 것입니다. 대부분의 클래스는 IO를 직접 수행 할 필요가 없으므로, 어딘가에 책임이 있거나 계층이 좋지 않은 곳에서 발견되는 경우 응용 프로그램에 따라 다릅니다.
Erik Eidt

답변:


21

디자인이 잘못되었음을 나타낼 수 있습니다. 당신이보고있는 클래스가 너무 많은 일을하고있을 수도 있지만 가져 오는 네임 스페이스가 네임 스페이스 분리가 의미하는 것보다 실제로 더 연결되어 있음을 의미 할 수도 있습니다. 과도한 엔지니어 나 과잉 흡수 때문일 수도 있지만 사용에 맞지 않는 디자인 일 수도 있습니다.

즉, 그것은 냄새입니다. 때때로 그것은 당신을 나쁜 것으로 인도하고 때로는 잘못된 경보 일뿐입니다.


가져온 "이름 공간"이 전부 또는 대부분 목적 상 크게 다른 경우 진정한 "코드 냄새"가 될 것이라고 생각합니다. 솔직히 말해서, 나는 using단일 C # 파일에 6 ~ 8 개가 넘지 않았습니다 .
Greg Burghardt

2
"코드 냄새"라는 용어를 올바르게 사용하기 위해 가능한 한 두 번째 +1을 드리고 싶습니다.
Jörg W Mittag

! @Greg-동의합니다. 일반적으로 "사용"이 관련되어 있습니다. 이 경우 "용도"의 약 15-20 개가 응용 프로그램 네임 스페이스에서, 나머지는 .net 프레임 워크에서 가져 오기 때문에 추상화에 대한 사례라고 생각합니다.
Jon Raynor

2

클래스는 의도 된 기능을 제공하는 데 필요한 것보다 크거나 작아서는 안됩니다.

한 응용 프로그램에는 하나의 작업 인 데이터 암호화라는 암호화 클래스가 있습니다. 핵심 기능, 로깅 및 예외 처리 사이에서이 작업을 수행하려면 환경에 11 개의 고유 한 네임 스페이스 가져 오기가 필요합니다.

'수입 최소화'라고 스스로에게 말하기는 어렵습니다. 또는 가져온 네임 스페이스 수를 세는 것만으로 클래스의 성공을 판단 할 수 있습니다. 나는 이것을 클래스의 성공을 나타내는 지표로 단독으로 사용할 수 없다. 나에게 '수입'은 학급의 수단이다. 클래스의 직업이 잘 정의되어 있으면 수입을 포함하여 지원 시스템 내의 다른 모든 것이 스스로 처리됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.