Purpose-built post
이 포스트는 "Effective C#"을 읽고, 궁금했던 것과 생각났던 것들 정리하기 위한 목적으로 만들었다. - 익필
Content
이 항목에선 "프로퍼티(Property)를 써라" 라고 권하는 내용이 담겨 있다. 내용을 읽는 중 몇가지 궁금한 것, 왜 써야 하는지 에 대해서 정리하겠다.
1. C#에서 무엇을 프로퍼티(Property)라고 하는가?
프로퍼티(Property)는 쓰임으로 정의 하면, C#에서 클래스에 있는 멤버 변수에 접근하는 get/set 을 의미한다. 언어로 정의하면, 멤버 변수에 접근하는 메서드 형태로 구현된 C# 언어 요소 이다.
글 보단, 눈으로 보는게 빠르므로,
2. 왜 프로퍼티를 사용 해야 하는가?
책에서 왜 써야 하는지 설명되어 있는데, 코드가 더 유연해 지기 때문이다. C++ 에서도 멤버 변수에 get/set을 달아 두면, 유연해 지긴 한다. 그렇다면, 어디서 어떻게 유연해 지는지 알아야 하는데, 몇가지 글을 남긴다.
2-1. 데이터 바인딩을 할 수 있게 유연해 진다.
데이터 바인딩 부터 설명해야 하는데, 데이터 바인딩이란, 윈폼 컨트롤러 객체와 데이터 원본을 연결 시키는 기술이며, 원폼 컨틀로러 객체가 변화 될 때, 데이터 원본 역시 변화 된다.
textBox1.Text = "3" <-- 이런 식으로 직접적으로 처리 하면, 원본 데이터인 _MyName 은 변화되지 않는다. 윈도우 폼으로 입력 되어야지만 변경 된다. 이런줄도 모르고, "왜 내가 한것은 안되지?" 라고 1시간 동안 데이터 바인딩 자료만 찾아 다녔다. - 만약 양방향 바인딩을 하고 싶다면, 몇가지 더 추가 해야 한다.
참조 링크
이러한 데이터 바인딩은 프로퍼티만 해당 된다. 말 할 필요없이(Needless to say)멤버 변수를 직접적으로 바인딩 할 수 없다. 이 데이터 바인딩은 진짜 윈도우 프로그래밍에서 빼 놓을 수 없는 기법이다.
2-2. 멤버 변수 접근시 동기화 할 수 있게 유연해 진다.
이 또한 말할 필요 없이, 멤버 변수와 함수의 차이점이다. 그러므로 함수로 했을 때 장점을 모두 갖을 수 있다.
2-3. 이진 호환성을 높여 준다.
이게 무슨 말인지 모르겠다. Item 4에서 다룬다기에, 일단 패스
Digression
- C++ 에서 get/set 이 필요한 이유와 일맥상통 하며, 추가적으로 데이터 바인딩과 이진 호환성을 높여 준다를 알면 되겠다.
- C# 윈도우 프로그래밍에서 데이터 바인딩이 있다는 것을 이제야 알았다. C# 윈도우 프로그래밍 책 한권을 더 사야겠다.
'책 정리 > Effective C#' 카테고리의 다른 글
item 10, GetHashCode()의 함정을 유의하라 (0) | 2010.06.27 |
---|---|
item 9, ReferenceEquals(), static Equals(), instance Equals(), operator==의 상호 연관성을 이해해라. (0) | 2010.06.26 |
item 8, value 타입을 사용할 때 0이라는 값이 의미를 가질 수 있도록 하라 (0) | 2010.06.24 |
item 7, immutable atomic value 타입이 더 좋다 (0) | 2010.06.23 |
item 6, value 타입과 reference 타입을 구분하라. (0) | 2010.06.20 |
Item 5, 항상 ToString()을 작성하라. (0) | 2010.06.11 |
item 4, #if 대신 Conditional Attribute를 사용하라. (0) | 2010.06.05 |
item 3, cast보다는 is나 as가 좋다. (0) | 2010.04.05 |
Item 2, const 보다는 readonly가 더 좋다 (0) | 2010.04.02 |
Effective C# 을 읽는다. (711) | 2010.03.30 |
최근댓글