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# 윈도우 프로그래밍 책 한권을 더 사야겠다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기