문제

가지고있는 이점은 무엇입니까? 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;
        }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top