불필요한 참조와 사용의 결과는 무엇입니까?


12

나는 약간 깔끔한 괴물이며 using각 클래스에서 참조와 s를 정리 하여 실제로 사용되는 것만 유지하여 프로젝트를 유지하는 경향이 있습니다.

필수 사항을 지키기 위해 OCD 신경을 진정시키는 다른 주장은 무엇입니까? 나는 대부분 시스템 참조를 생각하고 있습니다. 맞춤 작업에 대한 참조는 많은 이전 버전과의 호환성 문제를 가져올 것입니다. 릴리즈 풋 프린트가 더 큽니까? 더 긴 컴파일 시간?


5
그 주 using들과 참조는 같은 것이 아니다. 많은 답변이이를 고려하지 않습니다.
phoog

1
코드를 깨끗하게 유지하고 최소한으로 사용하려면 ReSharper를 구입하십시오. Visual Studio에 대한 놀라운 확장. 없이는 살고 / 프로그램 할 수 없습니다. ;-)
Anders

답변:


13

Intellisense는 using최소한으로 유지하면 훨씬 더 유용 할 것 입니다. 이는 큰 이점입니다.

그 외에는 이득이 없다고 생각합니다. 따라서 C # 컴파일러는 1 % 더 빠르게 작동 할 것입니다. 그래서 뭐.


1
그 1 %의 누적 값은 상당하지만 근본적으로 컴파일러는 문제를 최적화 할 것으로 기대합니다. 그러나 나는 단순히 깔끔하게하는 데 문제가 없습니다
Murph

C # IntelliSense는 2005 년 이래로 모든 것을 목록에 완전히 버리기 시작한 이래로 조금 지저분했습니다.
Rei Miyasaka

@ReiMiyasaka는 당신이 원하는대로 IntelliSense를 얻고 Ctrl+."Add namespace XYZ" 를 빠르게 고칠 수 있도록합니다
kizzx2

1
@ 머프 : 누적 값이 1 %가 되더라도 누적 총계의 1 %가 유지되므로 항상 중요하지 않습니다. 또한 컴파일러는 using실제로 불필요하다는 것을 알기 전까지는 무시할 수 없지만 전체 소스 파일을 먼저 컴파일하지 않은 경우에는이를 알아낼 수 없습니다. 프로젝트 참조와 마찬가지로 동적 (컴파일 타임에 감지 할 수 없음) 방식으로 사용될 수 있기 때문에 사용되지 않는 것처럼 보이기 때문에 버려지지 않습니다.
Mike Nakis

1
조금 늦었지만 제 경우에는 매우 제한된 리소스 장치 용 앱을 만들고 있습니다. 불필요한 참조를 추가하면 최종 응용 프로그램 크기에 영향을줍니다. 그리고 우리는 패키지를 배포하고 다른 패키지와 경쟁하려고 노력할 것입니다. 더 큰 패키지는 사용자가 앱 다운로드 여부에 대해 두 번 생각하게 할 수 있습니다.
hmadrigal

9

Visual Studio (간단한 마우스 클릭)에서이 작업을 수행하는 것은 사실상 사소한 일이므로 왜하지 않습니까?

이것은 Occam 's Razor 와 일치하며 , 단지 훌륭한 엔지니어링입니다.

그렇지 않으면 다른 개발자가 프로젝트를 열려고 할 때 컴퓨터에없는 라이브러리에 대한 (사용하지 않은) 참조가 포함 된 경우 어떻게되는지 고려하십시오. 이제 가난한 개발자는 확인되지 않은 참조가 존재하는 이유와 그에 대한 조치를 파악해야합니다.

원하는 경우 황금률 측면에서 고려하십시오. 컴퓨터에없는 라이브러리에 대한 참조가 많고 왜 그 라이브러리에 있는지 전혀 모르는 프로젝트에서 개발을 진행하고 싶습니까?


+1, 전체 솔루션에 대해이를 수행 할 수있는 추가 기능이 있습니다. 또한 일반적인 웹 페이지는 약 1MB이므로 전체 프로그램 최적화가 중요한 ClojureScript 및 Google Closure 비디오를 상기 시켰습니다. 필요하지 않은 것들을 청소하는 것이 좋은 습관입니다.
Job

6

using명령문은 컴파일러가 클래스 등을 완전히 참조 할 수 있도록하기위한 using것입니다 . 추가 명령문은 컴파일 시간에 별다른 영향을 미치지 않습니다.

또한 런타임은 실제로 필요할 때까지 참조 된 어셈블리를로드하지 않으므로 불필요한 참조로 인한 부정적인 결과는 없다고 생각합니다.

Reflector와 같은 도구를 사용하는 경우 이러한 불필요한 비트를 찾아 제거하는 것이 대부분 자동화 될 수 있으므로 이러한 활동에 많은 시간을 소비하는 것은 낭비라고 말하고 싶습니다. 예를 들어, 불필요한 using진술 을 수동으로 제거하는 1 ~ 2 시간의 시간 이 Reflector 라이센스 비용을 지불하며 다른 많은 생산성 향상 기능과 함께 제공됩니다.


을 사용한 청소는 VS 2010의 기본 기능입니다 (2008 년도 생각합니다). 그리고 ReSharper는 참조도 할 수 있습니다. 하지만 대규모 정리 작업을 시작하기 전에이를 위해 도구를 사용하는 방법을 살펴 보겠습니다.
MPelletier

미사용 usings와 미사용 참조의 구별을 명확하게 표현하기 위해 +1 둘은 매우 다릅니다!
phoog

1

위의 것 외에도 여기에서 아직 언급하지 않은 것 같습니다. 각 참조에는 .NET 프레임 워크 또는 외부 DLL 내의 구성 요소가 필요합니다. 외부 DLL을 참조하는 경우 소프트웨어를 실행할 때 언제 어디에서나 참조해야합니다.

편집-아래 phoog의 유효한 주석에 따라 : DLL이 사용되지 않고 참조에 추가 되었기 때문에 응용 프로그램과 함께 제공되지 않아도 응용 프로그램은 계속 실행됩니다. 코드에서 사용되지 않은 참조를 처리 하려면 다음을 참조하십시오 . 사용하지 않는 참조 제거 .


1
참조가 사용되지 않는 경우 소프트웨어를 실행할 때 언제 어디서나 DLL이 필요하지 않습니다.
phoog

@phoog, 귀하의 의견에 감사드립니다. 적어도 .NET VS2010에서 솔루션에 대한 참조를 수동으로 추가하면 DLL은 코드에서 사용하지 않더라도 실제로 bin 폴더에 추가됩니다.
NoChance

1
그러나 bin 폴더에서 DLL을 삭제하거나 DLL없이 응용 프로그램을 게시하면 응용 프로그램이 계속 실행됩니다.
phoog

@phoog, 당신이 맞습니다, 이것을 지적 해 주셔서 감사합니다. 글을 편집하겠습니다.
NoChance
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.