C# 프로퍼티(property), 자바 getter setter보다 나을까?

2023. 5. 3. 00:35도와줘/컴퓨터

728x90

C# property를 사용함으로써 얻을 수 있는 이점은 무엇인가?

 

이점이라고 하면 비교의 대상이 있어야 하는데,

멤버 변수를 public으로 선언했을 때에 비해서 얻을 수 있는 이점

getter, setter 메서드를 작성할 때에 비해서 얻을 수 있는 이점으로 구분되어야겠다.

 

물론 대부분의 블로그에서 그냥 구분없이 막 싸질러놨다.

구분하자면 다음과 같을 것이다.

 

멤버 변수를 public으로 선언했을 때에 비해서,
property를 사용함으로써 얻을 수 있는 이점

이건 getter, setter 메서드를 작성해도 충분히 얻을 수 있는 이점이다.

1. 정보 은닉 가능(메서드를 통해 숨길 수 있다)

2. set 시 값의 유효성 검증 가능

3. 데이터 무결성 보장 가능

4. setter가 무결성을 해칠 수 있고 빌더 패턴을 이용해야한다 이런 소리가 있는데 이건 여기서 말할 주제가 아니다. 그건 setter를 잘못 사용할 때의 이야기고, 걍 필드를 public으로 열어둘 때에 비해서 setter를 쓰는 방법의 장점에 대해 이야기하고 있는 거임 지금은..

5. get만 열고 set은 막는다든가 하는 게 가능함

 

getter, setter 메서드를 작성할 때에 비해서,
property를 사용함으로써 얻을 수 있는 이점

1. 값을 set할 때, setter 메서드를 사용하는 게 아니라 = 연산자를 사용할 수 있다!!!

2. C#은 자동 구현 프로퍼티가 있다( get; set; 만으로 가능)

 

 

 

 

 

 

많이들 질문이 나오는 부분인데

"2. C#은 자동 구현 프로퍼티가 있다( get; set; 만으로 가능)" 이게 무슨 장점이냐?

이럴 거면 그냥 변수 접근제한자를 public으로 선언해라...라고 한다.

둘 다 열거면 간단하겐 맞는 말인데 사실 하나를 막을 수 있어서 쓸 수 있다.

이 외에도...

Properties vs. Public Variables (codinghorror.com)

 

Properties vs. Public Variables

I occasionally see code with properties like this: private int name; public int Name { get { return name; } set { name = value; } } As I see it, there are three things to consider here. 1. When is a property not a property? When it's a glorified public var

blog.codinghorror.com

아주 유익한 글이니 참고하면 좋다...

728x90