문제

사용하기위한 Benifit이 있습니까?

private var _someProp:String;

public function set someProp(value:String):void
{
    _someProp = value;
}
public function get someProp():String
{
    return _someProp;
}

사용하는 것과는 달리 :

public var someProp:String;

Getter/Setter를 사용하는 것이 추가 처리가 필요하거나 속성이 변경 될 때 알림을 받아야 할 때 유용 할 수 있다는 것을 알고 있습니다.

public function set someProp(value:String):void
{
    _someProp = value;
    _somePropChanged = true;
    doSomethingElse();
}

그러나 이것을 필요로하지 않으면 공개 VAR을 사용하는 것만으로 Getter/Setter를 사용해야 할 이유가 있습니까?

감사!!

도움이 되었습니까?

해결책

당신의 언어에 따라, 당신은 나중에 소개 할 수 없기 때문에 getter/setter를 선호해야합니다.

다른 팁

이것은 실제로 사용중인 언어/프레임 워크/툴킷에 약간 의존합니다.

그러나 버전 관리 및 API 호환성과 관련된 Getters 및 Setter를 사용할 때 종종 이점이 있습니다. 이것은 자체적으로 사용하는 매우 유용한 이유 일 수 있습니다.

이것은 언어를 모르면 실제로 대답 할 수 없습니다. 게터와 세터는 대부분의 언어에서 더 많은 비용이 들지만 도로에서 유연성을 구매합니다. 일부 언어에서는 구문이 변경되기 때문에 발신자의 코드를 변경하지 않고는 대중을 Getter/Setter로 변경할 수 없습니다. 그러나 이것은 C#의 문제가 아닙니다.

getters and setter를 사용하면 매개 변수 유효성 검사를 수행 할 수 있습니다. 그들은 당신이 첫 번째 참조까지 물체 생성을 지연시킬 수있게 해줍니다. 그들은 많은 장점이 있으며, 처음부터 이러한 장점 중 하나가 필요할 때마다 사용합니다.

그러나 나는 바로 필요할 때만 또는 유연성이 필요할 때만 getters and setter를 사용합니다. 그렇지 않으면 나는 그것들을 bloat로 본다.

참고로, 공개 var로 시작하여 필요한 경우 나중에 코드의 getter / setter로 변환 할 수 있습니다. 사용중인 언어에 따라.

귀하의 재산이 완전히 멍청하고 나머지 수업에 부작용이 없다면, 그냥 공공 분야로 노출하십시오.

그것은 많은 경우에 당신의 속성입니다 ~ 할 것이다 부작용이 있으므로 설정 및 액세스 방식을 제어해야합니다.

사소한 예로서, 공개 변수가 생성자의 무언가로 설정되지 않으면 어떻게됩니까? 이것이 널로 반환되는 것에 대해 괜찮습니까? 아니면이 변수를 귀환하기보다는 무언가로 설정 하시겠습니까? 이것은 커스텀 게터가 가치있는 간단한 예입니다.

getters and setter는 또한 변수를 설정할 수있는 값을 더 많이 제어 할 수 있습니다.

bool setAge(int age){
   bol retVal = true;

   if(age <= 0)
       retVal = false;

   return retVal;
}

세터가 없으면 값이 0으로 설정 될 수 있고 나쁜 일이 발생할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top