프로퍼티(Property)(2023-09-27)

SeongH·2023년 9월 27일
0
post-thumbnail

1. 프로퍼티(Property)란??

 프로퍼티는 속성이란 의미를 가지고 있다. 프로퍼티를 사용하면, 필드에 속성 값을 반환하거나 새 값을 할당 할 수 있다. c#과 같은 객체지향 언어를 사용할 때에는 항상 정보은닉화에 대해서 염두해 두어야하는데, 필드를 public으로 선언을 하면 필드가 어느 순간 잘못된 값으로 지정되어 프로그램이 동작하지 않는 문제가 발생 할 수 있고 그렇다고 private로 선언을 하면 접근방법이 까다로운 문제가 있다.

유니티에서 플레이어의 정보를 만드는 코드를 예를 들어보자,

<프로퍼티를 사용하지 않았을 경우>

  class Player
    {
        private int hp;
        public int GetHp() { return hp; }
        public void SetHp(int currentHp) { this.hp = hp; }
    }

private으로 선언된 현재 체력(currentHp) 값을 가져오거나 수정하기 위해서는 GetHP, SetHP와 같은 메서드를 이용해야한다. 하지만 프로퍼티를 사용한다면 이를 더 간단하게 구현 할 수 있다.

<프로퍼티를 사용한 경우>

 class Player
    {
        int hp;
        public int Hp
        {
            get
            {
                return hp;
            }
            set
            {
                hp = value;
            }
        }
    }

위와 같이 프로퍼티를 사용하게 된다면 값을 가져오거나 수정 할 떄마다 GetHP,SetHP 메서드를 사용하지 않고도 Hp 프로퍼티를 이용하여 더 간단하게 사용 할 수 있다.

굳이 get, set를 다 써야할 필요는 없고 어느 한가지만 사용하여도 문제가 없다. get 접근자만을 사용하면 읽어올 수 밖에 없고, set 접근자만을 사용하면 쓸수 밖에 없다. get과 set을 둘다 쓰면 읽고 쓸수 있다.



2. 일반선언과 프로퍼티의 성능

public int age; -> 일반 선언
public int age { get; set;} -> 프로퍼티 선언

일반 선언과 프로퍼티 선언은 수치상으로는 80%정도의 차이를 보인다고 한다. 하지만 각 선언이 가지는 데이터량이 적기 때문에 실질적으로는 그렇게 큰 성능의 차이를 보이지는 않는다고 한다.

결론적으로 get set을 통한 프로퍼티는 특별한 속성을 안 넣어도 된다면 일반 전역필드로 선언하여 사용하는 것이 성능상 더 유리하기는 하지만 많은 작업을 돌릴 경우에만 미세한 차이를 보이기 때문에 적절히 잘 선택하여 사용하여야 할 것 같다.

profile
개발자 꿈나무

0개의 댓글