2008-11-03 3 views

답변

0

클래스 내부의 변수를 변경하려면 속성을 사용하는 것이 가장 좋습니다.

변수가 외부에서 수정되는 것이 바람직하지 않습니다.

향후 개발에 대해서도 생각해보십시오. 전체 프로그램을 변경하지 않고 속성 뒤에 일부 논리를 넣을 수 있습니다.

2

분명히 개체의 다른 속성을 다시 계산하는 것과 같이 개체 상태에 다른 효과를주기 위해 변수를 변경하려는 경우에는 mutator 함수를 사용해야합니다.

개체를 잘못된 상태로 설정하는 변수를 설정할 수 있다면 아마도 mutator 함수를 사용해야합니다. 이렇게하면 불법적 인 일이 발생하기 전에 예외를 throw하거나 오류를 반환하거나 무시할 수 있습니다. 이것은 디버깅에 대한 경이를합니다.

그러나 일부 변수는 뮤 테이터 기능으로 수정 될 수 있고 다른 변수는 공개되므로 프로그래머는 어떤 변수가 무엇인지 추적해야합니다. 이것은 시간과 노력의 낭비이므로 모든 경우에 뮤 테이터 기능을 사용하는 것이 가장 쉬운 경우도 있습니다.

4

데이터 멤버를 직접 노출하지 마십시오. : 은폐 액세서를 사용하면 나중에 인터페이스를 변경하지 않고 구현을 변경할 수 있습니다.


알고 있어야합니다. 나는 때때로 짧은 지문을 가지고 그것을 후회 할 기회를 가졌습니다.

1

개체를 순전히 서비스으로 보면 변수 노출은 이러한 서비스를 노출하는 좋은 방법이 아니라는 것을 알게됩니다.

API는 객체가 무엇을 의미하는지 (높은 응집력을 얻기 위해)를 반영해야하며, setValue (...)를 정의하면 그럴만 한 방법이 필요하지 않기 때문에 - 오늘 - 변수를 변경하지만 개체가이 서비스를 노출하는 것이 적절하기 때문입니다.

그래서 :

  1. 은 당신이 쓰는 모든 단일 클래스의 모든 단일 멤버에 접근 또는 뮤 테이터 기능을 제공하지 마십시오. 접근 자/변경자 메소드가 클래스 인터페이스 (API)의 합리적이고 유용한 부분 인 경우에만 접근 자/변형 자 함수를 제공하십시오.

  2. 접근 자나 변경자로 생각하지 마십시오. 대신, 단일 구성원 인 (오늘)이 나타내는 개체의 특정 추상 속성에 액세스하거나이를 변경하는 메서드로 생각할 수 있지만 더 복잡한 방식으로 내일 계산 될 수 있습니다.

1

응답에 영향을 줄 수있는 언어가 무엇인지 언급해야합니다.

첫 번째 생각은 수업에 대한 API에 관한 것입니다. 이 API를 안정적으로 유지하려면 (그리고해야합니다!), 나중에 오늘의 간단한 변수를 어떻게 본격적인 방법으로 변경할지 생각해보십시오.

많은 언어에서 호출 코드를 변경하지 않고 변수를 메서드로 변경할 수 없습니다. C, C++ 및 Java는이 범주에 속합니다. 나중에이 언어로 공개 변수를 사용하십시오. 왜냐하면 나중에 흔들림 공간이 없기 때문입니다.

파이썬에서는 발신자를 변경하지 않고 변수를 속성으로 변경할 수 있으므로 걱정하지 않아도됩니다. 공용 변수를 사용하십시오.

C# 나는 변수를 메서드로 투명하게 변경할 수있는 속성이 있다고 생각하지만 확실하지 않습니다.

관련 문제