cmcculloh
그는 물었다 12년 전
91

객체 특성 (properties) 을 어떻게 액세스하면 개체 내의 방법?

What is the &quot purist"; 또는 &quot correct"; # 39 의 속성을 액세스하려면 오버클로킹된 object& 내에서 객체에는 아닌 메서드로부터 getter / setter 방법?

외부에서 콩지름에 객체에는 한 것으로 알고 있지만, getter / setter 내에서 투석실에다가 just do.

Java:

String property = this.property;

PHP.

$property = $this->property;

또는 하겠나.

Java:

String property = this.getProperty();

PHP.

$property = $this->getProperty();

39 의 경우, 그동안 나를 용서해 리틀이에요 오프하도록 it& 내 Java 는 자바 가상 머신 (jvm) 에 연간 하도 프로그래밍되었습니다.

  • EDIT:*

나는 사람들이 얘기하는 것 같다고 가정하면 비공개되거나 금지되었는지 com/go/4e6b330a_kr / 속성만. 내가 어렸을 때 배운 OO / 세터 속성 하나가 모든 것을 가르쳐 게터 사용할 경우에도 전송되었기 여론 (public / 속성, 오히려 난 그 모든 변수를 만들 수 없다 "고 말했다). 그래서, 난 과민반을을 허위 가정 에서 떨어져 시작될 수 없게 됐다. 아마 이 질문에 답하는 것으로 보인다 "고 하는 사람들이 가지고 있는 공용 속성 및 해당 don& # 39, t need 게터 및 세터, 어긋나는 것을 배울 수 있지만, 어쩌면 내가 말한 것은, 내가 하는 논의될 것으로 잘 알려져 있다. # 39 이라는 주제에 대해 다른 좋은 질문 어쨌든요 that& 것이다.

답변 18 개

그러나 이 경우, 나한테 you& # 39 는 종교 전쟁을 하고 있는 것 같다고 getter / setter 사용하여, 내부적으로 콩지름에 down the road - 이어질 뿐만 아니라 모두 사용하여 관리 문제 (예를 들어, 누군가 자도으로 코드 맞추기바인딩 세터 못하였느뇨 요구사항뿐 실행할 때마다 속성이 설정되어 있으며, 내부적으로 w / o 호출할 수 있는 속성 설정되기 setter).

Greg Hurlman
euphoria83
그는 10년 전 댓글을 달았습니다
0

39 의 setter 이외의 다른 사항은요 isn& 하고, t 속성 값을 설정 사용 예는 잘못된 것으로 나타났습니다.

Greg Hurlman
그는 10년 전 댓글을 달았습니다
1

39 이 발생하지 않도록 하는 것은, 어쩌면 @euphoria83 doesn& 제재를 받지 않는다.

39 의 중요한 것 같아 개인적으로 it& 거주하리라 일관됨. 세터 게터 포락선으로 사용할 경우, 그리고. 유일한 시간 꼭 이래야겠어요 액세스함으로써 직접 현장 상황은 많이 액세서의 오버헤드에. # 39 느낄 수 있을 수 있지만, 팽만감, re you& 코드에서 분명 향후 전체 절약합니다 불필요하게 많은 두통. 클래식 예:

나중에 현장 업무를 하는 방식을 변경할 수 있습니다. 어쩌면 계산됩니까 합니다 혹시 다른 형식을 백킹을 시도하려는 즉석에서 선보였다. 속성을 직접 액세스하며 경우 발생할 수 있는 한 많은 코드를 일부를 변경 등 가혹한 포프.

39, 상당히 놀란 것은 이 문제가 어떻게 i& 게터 세터 '와' m fine & 优秀 emc. 만장일치로 있다. 내가 Allen 호룹 ";; a href = &quot &lt 의해 권고하십시오 인센디어리 문서,,, 세터 Evil&lt /a&gt &quot http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html&quot &gt 게터 및 있다. 가치를 부여할 수 있지만, 저자, 제목 캐비닛용입니다 충역 유효함 점.

특히, '개인' 의 경우 게터 세터 '및' 해당 분야 등에 있어, 각각의 모든 필드이므로 틀렸다니까 좋은 것이다. # 39; d you& 유형을 변경할 수 없는 파장이 매우 한다는 모든 클래스가 있는 페이징됩니다 전용 필드 '킬러'.

또, 엄밀히 말하자면 OO 의 관점, 이에 해당하는 제공하십시오 객체에는 메시지 (메서드) 그들의 (그러길 바래야지) 단일 책임. 대다수의 게터 don& 세터 ',' '와', '# 39 더 쉽게 이해할 수 없다' 는 그들의 구성 객체에는 펜.디스펜세인콘토 (서피스를) 보다 펜.제콜러 다는일은 감지에서 ' ()'.

또한 사용자는 하나님께용서를 객체에는 세터 게터 및 일부 데이터에 대한 계산을 수행할 것을 권장하십시오 클래스, 그리고 다른 값을 설정한 후, 더 잘 알려진 객체에는 절차적 프로그래밍. # 39 더 단순히 해야할 you&; d) 를 역임한 떠날려하면 객체에는 조교하실 제일 것입니다. [정보 숙련가] [1] 소트트웨어용 관용구.

그러나 세터 게터 및 필요하다고 해서 dell. 경계를 레이어에는 - UI, 지속성) 등이 있습니다. # 39 의 내부를 class& 제한되었거나 액세스하도록 c++& # 39 의 친구 같은 키워드, java& # 39 의 패키지 금지되었는지 .net& # 39 의 내부 액세스 및 액세스,,, 친구, 클래스 a href = &quot &lt &quot &gt pattern&lt /a&gt, http://moffdub.wordpress.com/2008/09/17/friend-classes-in-java-and-c-sharp/ 세터 '와' 의 게터 가시도로 줄일 수 있습니다) 를 필요로 하는 구멍만이 저들이요

[1]: # informationexpert http://en.wikipedia.org/wiki/grasp% 28object-oriented_design% 29

이 속성이 사용되는 방법에 따라 다릅니다. 예를 들어 있는 이름 재산이잖아 수강생용 객체에는 있습니다. Get 메서드를 사용할 수 있는 경우, 그 이름을 가져오기할 데이터베이스에서 hasn& 읽어들입니다 # 39 는 이미. 이 방법은 데이터베이스에 대한 불필요한 전화에 줄일 수 있다.

이제 let&; s say you have a # 39 에 있는 사립 정수 엇회전식 객체에는 횟수를 들려주시겠습니까 이름을 일어났음을. Get 메서드입니다 사용하지 않도록 설정할 수 있습니다 잘못된 수 있기 때문에 내부에서 객체에는 생성될 수 있습니다.

moffdub
그는 12년 전 댓글을 달았습니다
0

비즈니스 / 도메인 개체, 이제 인프라스트럭처로 객체인지 수강생용 경우 믹싱 (mixing) 이다. 가장 큰 기업 및 비즈니스 / 도메인 객체에는 미디어만을 사용하여 도메인 해야 할 수 없다.

cmcculloh
그는 11년 전 댓글을 달았습니다
0

일종의 부울을 추가했는지 와일드링이 대한 getter 다음과 같습니다.

PHP.

공적인 기능은 제나미 ($ 우치데콜 = true) { if ($ 우치데콜) { $ this-&gt 잉크레멘트남레카예드 ();; }

$ this-&gt 복귀하십시오, 이름, } 그리고 객체 자체에 내에서 얻을 수 있습니다 '라는 이름, keep it 의 경우 증가 기준:

PHP.

$ name = $ this-&gt 제나미 (false);; 나는 그냥 가는 알려왔다 여기서요?

PHP 는 등 다양한 방법으로 처리할 수 있는 방법, but I '와' 매직 '이' _get _set 포지셔닝하십시오 명시성 게터 및 세터. # 39 의 here& 이유:

  1. 세터 (및 게터 위한 중요한) 의 검증 배치할 수 있습니다.
  2. 인텔리 수행됨 명시성 방법
  3. 쓰기, 읽기 전용 속성을 전용이거나 읽기-쓰기로 서버인지에 질문을 받지 않고 있다.
  4. (즉, 계산됩니까 값) 는 가상 특성는 동일합니까 일반 등록 정보 검색
  5. 속성 즉 절대 실제 어디든요 정의된 개체를 간편하게 설정할 수 있습니다, 그 다음에 댁이라면 문서화되지 않은

&gt. 나는 그냥 가는 알려왔다 여기서요?

아마도;)

다른 외곽진입 약간만이라도 활용하기 위해서는 개인 / 보호 방법을 끝의 (캐싱과는 / etc / db), 그리고 실제로 행하는 것이 증분을 위한 래퍼 수가 있다.

PHP.

public function getName() {
    $this->incrementNameCalled();
    return $this->_getName();
}

protected function _getName() {
    return $this->name;
}

그리고 객체 자체에 내에서.

PHP.

$name = $this->_getName();

이렇게 하는 첫 번째 argument for something else 계속 사용할 수 있습니다 (캐싱된 여기에 사용되는 데이터 전송을 위한 플래깅 같은 것인지 모른다).

내가 여기 왜 투석실에다가 반드시 누각되었습니다 요점이지 해당 객체의 속성을 사용하여 객체를 getter 인사이드라면 액세스하려면?

전화 한 통화 할 수 있는 킬러 getter 삼고 그 결론이 하는 getter.

그래서 I& # 39 라고 객체를 직접 볼 수 있는 방법, d 로, 특히 다른 방법으로 이 객체에는 호출하십시오 액세스함으로써 속성 (property 액세스하십시오 다음 이를 다시 어쨌든 그냥 직접) 는 단지 무의미한, 고 연습 (또는 나는 질문을 잘못).

Echilon
Egg Vans
그는 7년 전 댓글을 달았습니다
0

I was 에 의해 제어됨을 주석문입니다 같은 medianame 했습니다. 또한 당시 답변됨 종료되지;)

꼭 이래야겠어요 말하도다 더 나은 방법을 객체에는 내에서도 액세서의 사용할 수 있다. 다음은 내 마음 갈 점은 바로:

1) 이 국익 일관성 유지 액세스하며 위부의 객체에는 함께 이루어져야 했다.

2), 경우에 따라서는 이러한 방식이 가능하다고 하고, 그 이상 액세서의 액세스하면 필드. 일부 추가 처리 () 는 희귀 표시되어도) 하고 있을 수도 있다. 이 경우, 추가 필드를 직접 액세스함과 놓치고 있는 것과 프로그램에서 경우 이러한 처리는 항상 일이 갈 수 처리 및 그 중에 수행됨 액세스하며

순정 주의자 피할 방법은 모두 다음, 이 OO (데메테르 법칙] 1 를 사용하는 [떠날려하면 don& # 39, t ask] [2] 외곽진입.

39 의 값을 가져오는 대신 object& 두 클래스, 속성, 즉 긴밀하게 짝 로케이터로 매개변수입니다 사용 예:

  doSomethingWithProperty() {
     doSomethingWith( this.property ) ;
  }

예를 들어 있는 속성 유형, int 는 기본 도메인 이름을 사용하지 않는 문제에 대한 접근 방식, 프로그래밍 도메인.

  doSomethingWithProperty( this.daysPerWeek() ) ;

이러한 모든 사후 조건을 캡슐화 및 유지 또는 종속적입니다 불변량 수 있게 해준다. 그러나 세터 유지하기 위해 모든 방법을 사용할 수도 있습니다, t # 39 의 사전 조건 또는 종속적입니다 불변량 don& 빠지지 트랩할 세터 http://www. gnu. 백됩니다 관용구 사용할 때 그 이름 할리우드 지정하기 위한 것이다.

[2]: 텔동타스크 http://c2.com/cgi/wiki?

만약 &quot 의해 purist"; 그럼, 그럼 내가, 내 모든 분야를 너희가운데 encapsulation&quot &quot, 가장 일반적으로 개인 및 사용할 수 있지만 모든 다른 클래스, 하위 클래스 내에서 자체적으로 티스윈필드 등 액세스하며 인스턴스입니다 스테이드 name. domain. 게터.

경우에 따라 다릅니다. # 39 의 문제를 더 이상 다른 사항은요 it& 스타일, 그리고 하드 규칙이에요 꾨т 臾몄젣媛?

If I 'll I& 편집하십시오 won& # 39, t # 39, 속성 ()' 공개 방법을 사용하여 get_property it& 같은 특별한 일 아니면 s # 39, 이 경우, ll 단지 내에 다른 객체에는 미스크리 객체에는 I& # 39 없다 "며" 재산 및 정보기술 (it) 을 obj-&gt object_property ',' $ () 는 다음과 같은 뜻이 있다.

39 의 속성을 나여야지 it& δ1 객체에는 항상 $ this-&gt.

인터넷을 통해 개인 필드 또는 금지되었는지 이다. 속성 값을 액세스하려면 거쳐야 한다고 복사됩니다 로컬 변수 슬래시나 사용할 수 있으며, 두 번 이상 메서드입니다. 그래서 완전히 면변형된, 응용 프로그램의 경우 및 있는 경우, 및 기타 최적화되었는지 뒤흔든 아웃해야 미삭 위치로 이동하여 액세스하면 아소시아테드 속성 값을 통해 병목 현상이 되고 있다 (그 일이 결코 내가 판매업체에서 작성하더라도) 해야 할 수 있도록 터치 그 이외의 다른 것을 직접 com/go/4e6b330a_kr 백킹을 특성는 고려해보십시오 시작합니다.

.NET 개발자가 사용할 수 있으므로, 자동 등록 정보 관리를 위해 너회가 can& # 39 를 디자인할 때 com/go/4e6b330a_kr 백킹을 못할 정도였습니다.

내 코드를 사용하여 i& # 39, ve com/downloads/global/corporate/iar/esg_prosupport. 세터 / 게터 브라운아저씨의 쉽게 읽을 수 있습니다. 난 또 다른 클래스의 메서드를 사용하여 이를 제어할 수 있는 같은 데이터를 저장할 때 만약 내가 변경하십시오 속성.

내가 할 수 있지만, 공용 속성 때문에 잘못됐다 I& # 39 m 독학자 나는치료가그렇게 사용자 내 자바 클래스, 그들은 항상 비공개되거나 금지되었는지 도왔으매 바깥쪽인지가 코드 / 세터 게터 액세스하려면 합니다. # 39 의 it& 더 유지 보수 / 수정 작업을 할 수 있습니다. 및 δ1 클래스 코드. 하지만 난 내가 사용하는 경우 사소한 getter 방법은 직접 할당 메서드를 사용하여 속성 때문에 쉽게 코드를 추가할 경우 이벤트 불지옥의 항상 내가 할 수 있으면 좋겠습니다.

하지만 내가 원하는 답을 에서 [코맥컬로] [1] 에서 [그렉이야 헐먼] [2] 가 가장 정확한 답은 같다. All the time) 에서 사용하기 시작한 경우 getter / 세터 사용해야 겠고 및 / 또는 해당 업체와 협력을 위해 사용됩니다.

개인적으로 등을 찾을 수 있는 코드를 사용하여 표시됨과 getter / 세터 및 디버그로 나중에 쉽게 읽을 수 있습니다.

[1]: https://stackoverflow.com/questions/126/how-would-you-access-object-properties-from-within-an-object-method # 132 [2]: https://stackoverflow.com/questions/126/how-would-you-access-object-properties-from-within-an-object-method # 127

뭐, C # 3.0 properties& # 39 로 보인다. 기본 구축, 이 같은 방침은 수행됨을 당신꺼에요. 세터 속성 (또는 개인) 속성을 사용하여 설정할 수 있습니다.

개인적으로 사용하지 않을 때는 개인 멤버 견하여 디렉토리에만 언로드하기 일으킬 수 있는 바람직한 상태로 떨어질 것으로 객체에는 미만임 때와 같은 경우 또는 초기화중 캐싱과는 / 게으른 로드중 도전이다.

명시된 대로 일부 의견: # 39, t, 때때로 shouldn& 합니다 때가 있습니다. The great) 는 모든 장소에 대한 부품 com/go/4e6b330a_kr pbs. 볼 수 있는지 뭔가 변경할 때 사용할 수 있습니다. 뭔가 이를 사용할 경우, getter / setter 높여줍니까 합니다. # 39 doesn& 경우, t 문제를 결정할 수 있습니다.

그리고 누군가가 getter / setter 를 사용하는 경우 반대 케이스 만들 수 있을 것으로 분석할 수 있는 모든 곳에서 그들은 getter / setter 와 getter 변경하는 setter 를 사용할 수 있는지 내부적으로 뭔가 혼잡 상승했다.