2010-02-21 4 views
5

자바 세터에서 할 :자바 세터와 "이"사람들을 많이에서 발견 한

2)

public void setX(int newX) { 
    x = newX; 
} 

어떤 이유가 더 좋을 것이다 처음이 있습니까?

1) 오류가 쉽게 발생하지 않습니다. 몇 occassions에에 나는하는 사람들까지 코드에서 버그를 추적 한 : 실수로

x = x; 

, 그들은 그냥 빨리 입력하고 있었다 아마도 때문에 비켜 getter 및 setter를 얻고 싶었다.

+1

나는 첫 번째 옵션도 선호합니다. 이것이 왜 downvoted되고 있는지 모르겠다. – Jorn

+3

Eclipse는 getter 및 setter를 생성 할 때 자동으로 this.x = x 스타일을 사용합니다. 그래서 많은 사람들이 그 스타일을 사용하는 것일 수 있습니다. – chama

+0

두 번째 형식을 선호합니다. 항상 인수명으로'newX'를 사용하는 것은 아니지만'this.x = x;'는 변수 숨김 형식이므로 사용하지 않을 것입니다. – rsp

답변

14

스타일 문제입니다.

public void setX(int x) { this.x = x; } 

에 찬성 인수는 이미 하나를 가지고 있기 때문에 당신이 입력 인수에 대한 새롭고 의미있는 이름을 생각하지 않아도됩니다.

스타일을 선택하고 을 일관되게 사용하면입니다.

+2

스타일이 이미 선택되어있는 경우이를 고수하십시오. – reccles

4

나는 여기에 "더 좋거나 나쁨"이 있다고 생각하지 않습니다. 그것은 단지 스타일의 문제입니다. this.x = x을 선호하는

+0

첫 번째로 오류를 쉽게 작성하지 않았습니까? 몇 차례에 걸쳐 코드에서 사람들이 수행하는 버그를 추적했습니다. x = x; 실수로, 아마 그들은 빠르게 입력하고 있었기 때문에 getter와 setter를 방해하기를 원했을 것입니다. – Zubair

+6

getters와 setters는 누구입니까? 가치있는 모든 IDE가이를 생성합니다. "너무 빨리 입력"하는 경우, 모든 가치있는 IDE는 "x = x"가 잘못되었음을 바로 알립니다. – duffymo

+0

어째서 혼자서 간단한 세터를 타이핑하는 이유는 무엇입니까? 이클립스 실행, 클릭, 클릭, 완료. – viraptor

7

이유 :

  1. 생성자에 this.x = x를 사용하고 자바 프로그래머가 인식 알려진 패턴이다.
  2. 필드와 매개 변수의 x은 같은 값을 나타냅니다.
  3. x = newX에는 필드가 하나이고 다른 하나는 매개 변수라는 구문적인 표시가 없습니다.
1

저는 setters가 IDE에 의해 자동 생성된다고 가정합니다. 그래서 내 기본 설정은 IDE에서 기본적으로 사용되는 양식입니다. 말하자면, 나는 꽤 중립적이며 기본 IDE 설정을 변경하지 않는 것이 좋다고 생각합니다.

2

나는 this.x = x;을 선호합니다. 이 문제에 대한 올바른 방법은 없습니다. IDE에서는 this의 추가 색상이 좋을 것입니다.

+1

+1 색상! – bharal

3

이것은 단지 코딩 규칙입니다. 선택할 수는 있지만 자유롭게 을 사용하십시오. 또한 평균 IDE는 몇 번의 키 입력/클릭으로 모든 getter/setter를 자동 생성 할 수 있습니다. 예를 들어 이클립스에서 Alt 키 + 시프트 + R 할 다음 S 한 다음에의 getter/setter를 생성하고 확인을 클릭하고자하는 속성을 선택합니다. 또한 this.x = x 대신 x = x을 수행하면 평균 IDE에 경고가 표시됩니다.

내가 직접 this.x = x을 선호합니다.이클립스와 많은 리버스 엔지니어링 툴 (Dali와 Hibernate Tools와 같은)은 또한 기본적으로 그렇게 생성합니다.

x = newX 대회 (Hungarian notation)는 (구식) 절차 프로그래밍 세계에서 상속 받았으며 단순히 OO 이데올로기에 적합하지 않습니다.

+0

리버스 엔지니어링 도구에서 "this.x = x"를 사용하여 이해해야합니까? – Zubair

+0

아니요, 표준 준수 규칙 일뿐입니다. – BalusC

+0

네, 당신의 권리. Microsoft C 및 C++에서 자랐기 때문에 헝가리 표기법은 내가 자랄 수없는 것들 중 하나 였지만 어쩌면 내가 가지고 있어야합니다 :) – Zubair

2

자신의 코드이거나 기존베이스의 일부가 아닌 경우 원하는 코드를 선택하고 붙여야합니다. 그러나 기존 코드로 작업하는 경우 이미 사용중인 규칙을 따르십시오.

+0

예, 동의합니다. 컨벤션이 때때로 중요합니다. – Zubair

3

그것은 완전히 주관적이지만, 첫 번째 양식 등의 javadoc

나는 'this.x =의 X'양식을 사용하여 오류에 대한 많은 범위가있다 느끼지 않는다에서 좋은 명확한 방법 프로토 타입을 제공한다. 유닛 테스트에서 잡히지 않을 것은 아무것도 없습니다. 유닛 테스트가 있잖아요, 그렇죠?

+0

단위 테스트가 있습니다. 예 , 그리고 항상 글을 쓰지 만, 단 몇 건의 테스트에서 코드 커버리지가 거의없는 곳으로 얼마나 많은 프로젝트를 진행했는지 놀랄 것입니다. – Zubair

+0

예. 매개 변수에 펑키 한 이름 (예 : newX 또는 pX)을 사용하면 JavaDocs가 좋지 않게 보입니다. –

관련 문제