이/셀프 포인터 필수의 필수 명시 적으로 이점은 무엇입니까?
-
05-09-2019 - |
문제
가지고있는 이점은 무엇입니까? this
/self
/me
바늘 필수적인 명백한?
에 따르면 OOP 이론 방법 A 방법은 주로 구성원 변수와 방법의 인수에 대해 작동해야합니다 (만?). 이어서, 그것은 그럴 것입니다 더 쉬운 외부 (객체의 시야에서) 변수보다 멤버 변수를 참조하려면 ... 명시 적 this
이렇게 더 장점으로 만듭니다 더 어렵다 외부 변수보다 멤버 변수를 참조합니다. 이것은 나에게 직관적 인 것 같습니다.
해결책
멤버 변수 및 메소드 매개 변수 외에도 로컬 변수도 있습니다. 객체에서 가장 중요한 것 중 하나는 내부 상태입니다. 명시 적 멤버 변수 DeCeperencing은 귀하가 해당 상태를 참조하는 위치와 해당 상태를 수정하는 위치를 매우 명확하게합니다.
예를 들어, 다음과 같은 코드가있는 경우
someMethod(some, parameters) {
... a segment of code
foo = 42;
... another segment of code
}
이를 통해 빠르게 탐색 할 때는 이전 세그먼트에 정의 된 변수의 정신적 모델이 임시 변수인지 또는 객체 상태를 돌연변이하는지 알기 위해서야합니다. 반면에 .foo = 42는 물체 상태가 돌연변이되었음을 분명히합니다. 그리고 명백한 규모가 독점적으로 사용되는 경우, 반대의 경우 변수가 일시적인지 확인할 수 있습니다.
더 짧고 인식 된 방법은 조금 덜 중요하지만 여전히 장기적인 이해 성이 코드를 작성하는 동안 약간의 편의성을 우선합니다.
다른 팁
당신이 "명시 적에 대해 이야기하고 있다면 self
"파이썬의 의미에서 여기에 흥미로운 토론 주제에. 여기에 있습니다 Guido 응답 에게 브루스 에켈의 기사. Bruce의 기사에 대한 의견도 깨달았습니다 (일부는 어쨌든).
포인터/참조를 다른 곳의 현재 객체에 전달하거나 과제 연산자의 자체 할당으로부터 보호해야합니다.
메소드에 대한 인수가 멤버 변수와 동일한 이름을 갖는 경우 어떻게해야합니까? 그런 다음 사용할 수 있습니다 this.x = x
예를 들어. 어디에 this.x
회원 변수입니다 x
메소드 인수입니다. 그것은 단지 하나의 (사소한) 예입니다.
나는 일반적으로 이것을 쓸 때만 이것 (C ++)을 사용합니다. 과제 연산자 아니면 그 생성자 복사 변수를 명확하게 식별하는 데 도움이됩니다. 내가 그것을 사용할 수 있다고 생각할 수있는 다른 장소는 당신의 함수 매개 변수 변수 이름이 당신의 멤버 변수 이름과 동일하거나 사용하여 내 객체를 죽이고 싶은 경우입니다. 이것을 삭제하십시오.
예를 들어 회원 이름은 메소드에 전달 된 것과 동일한 곳입니다.
public void SetScreenTemplate(long screenTemplateID, string screenTemplateName, bool isDefault)
{
this.screenTemplateID = screenTemplateID;
this.screenTemplateName = screenTemplateName;
this.isDefault = isDefault;
}