[Effective C#] 지역변수 선언 할때는 var를 사용

WH_NAM·2024년 2월 2일

Effective C#

목록 보기
1/23
post-thumbnail

Effective C# Item 1

var를 사용하면 개발자 입장에서는 변수의 타입과 같이 지엽적인 부분보다 변수의 의미 파악에 더 집중할 수 있다.
컴파일러 관점에서 살펴본다면 개발자가 특정 객체의 타입을 명시적으로 지정하지 않더라도 객체 생성에 문제가 있을 경우 오류를 보고할 수 있다.

- var은 할당 연산자 오른쪽의 타입을 확인하여 왼쪽 변수의 타입을 결정하게 된다.

private void method()
{
    var i = 0;      // int
    var f = 0.0f 	// float
}

- 개발자가 올바른 반환타입을 알지 못해 올바르지 못한 타입을 명시적으로 지정하여 사용되는 경우를 방지한다.

	public IEnumerable<string> FindCustomersStartingWith1(string start)
    {
    	IEnumerable<string> q = from c in db.Customers 
        						select c.ContactName;       
                           
		var q2 = q.Where(s => s.StartsWith(start));
        return q2;
    }

위 코드는 데이터베이스에서 쿼리가 수행되는 경우 LINQ 쿼리는 실제로 IQueryable<string> 타입을 반환하지만 IEnumerable<string>으로 선언해 버렸기 때문에 IQueryable<string>과 관련된 장점을 모두 잃게 된다.

- 숫자타입(int, float, double ...) 사용시 var은 주의해야 한다.

var f = GetMagicNumber();
var total = 100 * f / 6;

total의 정확한 타입은 GetMagicNumber() 메서드의 반환타입에 의해 결정 된다. 이는 정밀도와 관련된 혼돈스러운 문제를 유발할 가능성이 있다.

- var를 사용할때 변수명을 통해 그 역할이 정확히 유추될 수 있도록 구현해야 한다.

var result = someObject.DoSomeWork(anotehrParameter);

var HighestSellingProduct = someObject.DoSomeWork(anotherParameter);

변수이름을 통해 Product타입임을 미루어 짐작할 수 있다.

타입을 명시적으로 드러내야 하는 경우가 아니라면 var를 사용하는 것이 좋다.
항상 그렇게 해야 한다는 것이 아니라 더 나을수 있다 정도로 이해해야 한다.
내장 숫자 타입(int, float, double 등)을 선언 할 때는 명시적으로 타입을 선언하는 편이 낫다.
올바르지 않게 타입을 명시하게 되면 컴파일러의 도움을 얻어 충분히 피해갈 수 있는 문제를 강제로 일으키는 꼴이 된다.

profile
안녕하세요

0개의 댓글