2012-03-13 2 views
0

가능한 중복 :
Java: Are Getters and Setters evil?변수를 직접 참조하는 것보다 클래스에서 변수를 반환하는 함수를 사용하고 있습니까?

나는 그것이 사용중이라는에서 간단한 부울으로 블록라는 클래스가 있습니다. 예를 들어 프로그램의 if 문에서 inUse()라는 메서드를 사용하면 inUse 부울을 반환하거나 block.inUse를 사용하여 변수를 참조하는 것이 더 좋습니다.

예 :

if(block.inUse == true) // do something 

또는 I가 사용중()가 직접 값을 이용하여 상기 블록 클래스 간단한 복귀 방법

boolean inUse() { 
    return inUse } 

감사

+1

http://stackoverflow.com/questions/565095/java-are-getters-and-setters-evil – assylias

답변

0

될 곳

if(block.inUse()) //do something 

가 확실히 사용해야 더 효율적인 실행이 현명합니다. 그러나 방법을 사용하는 것이 최선의 선택입니다. OO와 Java는 변수에 대한 캡슐화입니다.

+0

실제로 OO (및 그 이전에는 정보 숨기기)는 구현 정보를 변경하지 않고 변경 될 수있는 구현 정보를 숨기는 것에 관한 것입니다. 인터페이스. Parnas의 "모듈을 시스템으로 분해하는 데 사용되는 기준"(예 : http://sunnyday.mit.edu/16.355/parnas-criteria.html)을 읽으십시오. –

2

Java가 일반적으로 바이트 코드 인터프리터로 구현된다는 점을 감안할 때이 수준의 효율성에 대한 질문은 일반적으로 의미가 없습니다. 통역사가 부과하는 오버 헤드 비용으로 소금이나 바베큐 소스가 없어도 생력을 먹을 수 있기 때문입니다.

인스턴스 변수에 대한 액세스 권한 부여와 달리 메소드 사용의 이점은 프로그래머가 인스턴스 변수의 수정을 제어 할 수 있다는 것입니다.

0

jre에 따라 다르며 JIT 구현입니다. 대부분의 JIT 컴파일러는 일단 자주 호출되면 간단한 getter 및 setter를 인라인하게됩니다.

개인적으로 메소드를 통해 멤버 변수를 참조한 적이 한번도 없었습니다. 이것이 개인적인 취향의 문제라는 것을 알았지 만, 나의 일반적인 느낌은 객체가 자신의 내부 변수를 얻거나 (또는 ​​설정하는) 메소드를 호출 할 필요가 없다는 것입니다.

관련 문제