C #에서 'var'사용을 권장하지 않습니까? (VS2017)


15

곧 출시 될 Visual Studio 2017을보고 있습니다.

생산성 향상 이라는 섹션 에는 var의 모든 발생을 명시 적 유형으로 대체하는 데 사용되는 Visual Studio 이미지가 있습니다.

생산성 향상 VS2017

이 코드에는 Visual Studio에서 '고정 필요'로 식별 된 몇 가지 문제가 있습니다.

나는 C #에서 var 사용에 대한 이해를 다시 확인하고 싶었 습니다. 2011 년 Eric Lippert의 기사에서 Uses and misuses of 암시 적 타이핑 이라는 기사를 읽었습니다 .

에릭은 말한다 :

  • 필요한 경우 var를 사용하십시오. 익명 유형을 사용하는 경우
  • 선언 유형이 초기화 프로그램에서 명백한 경우, 특히 객체 생성 인 경우 var를 사용하십시오. 이것은 중복성을 제거합니다.
  • 코드가 변수의 시맨틱 한 "비즈니스 목적"을 강조하고 스토리지의 "기계적"세부 사항을 무시하는 경우 var를 사용하는 것이 좋습니다.
  • 코드를 올바르게 이해하고 유지 관리하는 데 필요한 경우 명시 적 유형을 사용하십시오.
  • “var”사용 여부에 관계없이 설명 변수 이름을 사용하십시오. 변수 이름은 변수에 대한 세부 사항이 아니라 변수의 의미를 나타내야합니다. "decimalRate"는 나쁘다. "interestRate"가 좋습니다.

코드에서 대부분의 var 사용법은 괜찮을 것이라고 생각 합니다. 나는 읽는 비트에 var 를 사용하지 않는 것이 좋다고 생각합니다 ...

var tweetReady = workouts [ ... ]

... 어쩌면 100 % 즉각 유형이 아니기 때문에조차도 나는 그것이 곧임을 알고 boolean있습니다.

이 부분 의 var 사용법 ...

var listOfTweets = new List<string>();

... 다음을 수행하는 것이 중복 적이라고 생각하기 때문에 var의 올바른 사용법처럼 보입니다 .

List<string> listOfTweets = new List<string>();

Eric의 말에 따르면 변수는 listOfTweets가 아니라 트윗 이어야 합니다 .

var여기 에서 모든 사용 을 변경하는 이유는 무엇입니까 ? 이 코드에 내가 빠진 것이 있습니까?


스크린 샷의 코드는 var를 사용해서는 안되는 것에 동의합니다.
Telastyn

1
나는 var여기의 모든 용도 가 괜찮다고 생각 합니다. 아마도 하나를 바꿀 수는 있지만 실제로는 필요하지 않다고 생각합니다. 왜 모두 명시 적 유형으로 변경합니까?
Rowan Freeman

2
인간에게 명백한 것이 항상 Visual Studio에 명백하지는 않습니다.
candied_orange

모두? 스크린 샷에 var와 관련이있는 오류가 하나 있습니다.
Telastyn

글쎄, 그것은 오류가 아니라 린터가 지적 할 종류의 경고입니다. 이미지에 따르면 모든 vars항목은 동일한 방식으로 표시되었습니다. 옆에 동일한주의 표시가 있고 빨간색 밑줄이 있습니다. 아마도 Visual Studio는 모두 같은 방식으로 수정하려고합니다. 내가 착각하지 않는 한.
Rowan Freeman

답변:


26

TL; DR : 아니요, Microsoft는 C #에서 'var'을 사용하지 않는 것이 좋습니다. 왜 이미지가 불평하는지 설명 할 수있는 맥락이 부족합니다.

VS2017 RC를 설치하고 옵션 패널을 열고로 이동 Text Editor -> C#하면 새 섹션이 표시 Code Style됩니다. 이는 ReSharper가 잠시 동안 제공 한 것과 유사합니다. 코딩 스타일에 대해 구성 가능한 규칙 세트입니다.

var변수 유형이 명백하고 "Elsewhere"인 경우 내장 유형에 대한 세 가지 옵션이 있습니다 . 각각의 경우 "명시 적 유형 선호"또는 "바람 선호"를 지정하고 알림 레벨을 "없음", "제안", "경고"또는 "오류"로 설정할 수 있습니다.

여기에 이미지 설명을 입력하십시오


3
기본값은 무엇입니까? "공장 설정"이 "명시 적 유형 선호"이면 MS가의 사용을 권장하지 않는다고 주장 할 수 있습니다 var.
JacquesB

@JacquesB, 기본값은 스크린 샷과 같습니다. 모두 "없음"으로 설정되었으므로 "명시 적 형식 선호"가 MS의 선호 방식으로 적극적으로 설정되어 있는지 또는 "제로 값"인지 여부를 알기가 어렵습니다. 내가 염려하는 한, 최고의 개발자는 모두 호의 var를 보이므로 MS의 견해가 무엇인지는 중요하지 않습니다.
David Arno

6

나는 당신이 그것에 대해 너무 많이 읽고 있다고 생각합니다. 따라서 암시 적 타이핑 사용법을 명시 적 유형 어노테이션으로 대체 할 수있는 기능이 있으며, 결론적으로 암시 적 타이핑은 권장되지 않습니다. C♯를 CIL 바이트 코드로 컴파일하는 기능도 있습니다. C♯이 권장되지 않으며 CIL 바이트 코드를 대신 작성해야한다고 결론 내겠습니까? 아마 아닙니다.

Microsoft는 IDE가 코드에 대해 깊이 이해하고 있음을 보여줍니다. 철자를 쓰지 않아도 타입을 쓸 수 있습니다. 그게 다야.

이것은 IDE의 코드 이해 능력을 보여주는 좋은 예일뿐입니다. 작고 독립적이며 (더 큰 리팩토링을 표시하는 것과 달리) 모든 에디션에서 사용할 수 있으며 모든 개발자에게 적용 가능합니다 (Ultimate에서만 사용할 수 있고 상당 부분에는 적용되지 않는 매우 인상적인 아키텍처 시각화 기능과는 달리) VS의 잠재적 사용자 중 큰 프로젝트를 절대로 보지 못할 것입니다. 매우 단순하지만 (문자 그대로 정확히 동일한 일 csc.exe을하고 있습니다.var특히 암시 적 타이핑 및 유형 유추를 실제로 이해하지 못하는 사람 (또는 Google의 "유형 유추"를 시도하고 Hindley-Milner, 통일, 역 추적 등)에 압도당하는 사람에게는 특히 인상적입니다. C♯의 로컬 전용 추론은 매우 간단하고 간단합니다).

간단히 말해 IDE 기능을 보여주는 화려한 방법입니다.

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