2014-07-21 4 views
5

내가 "이"키워드를 사용한다, 인스턴스 변수를 참조하기 위해 ...Java : "this"키워드 또는 "m_"접두어를 사용해야합니까?

class Foo 
{ 
    private int bar; 

    public Foo(int bar) 
    { 
    this.bar = bar; 
    } 
} 

OR (m "이 멤버 변수"를 의미 헝가리어 명명 규칙)은 "M_"접두사 ...

class Foo 
{ 
    private int m_bar; 

    public Foo(int bar) 
    { 
    m_bar = bar; 
    } 
} 

다른 쪽보다 이점이있는 경우가 있습니까?

+4

실제로'Java' 및 Java 구문이므로'this'를 사용해야합니다. –

+1

여기에 두 가지 * 다른 질문이 있습니다. 둘 다 주관적입니다. 1) 나는'm_'을 사용하지 않습니다, 2)'this'는 필요할 때만 사용합니다. – user2864740

+0

@ user2864740 OP는 'this'가 필요할 때 "m_"의 사용을 제안하는 것 같습니다. 나는 지금까지 합의가 그렇게하지 않는다고 믿는다. –

답변

9

this은 표준이며 읽기 쉽고 오류가 발생하기 쉽습니다.

실수로 변수를 숨기거나 정적 코드의 비 정적 필드에 액세스하려고 할 때 도움이됩니다.

즉이

int m_bar; 
public Foo(int m_bar) 
{ 
    m_bar = m_bar; 
} 

및 정적 INT의 m_bar을 방지하는 단계;

int m_bar; 
public Foo(int bar) 
{ 
    this.bar = m_bar; // a warning static field being accessed as non-static 
} 
+1

나는 동의하지 않는다 - 그러나 주관적인 질문/응답이다.나는 * 오직 * 그것이 필요한 곳에'this'를 사용합니다 (그리고'm_'은 전혀 사용하지 않습니다). 나의 IDE (JetBrains에 가라!)는 그것이 "틀린"때 알려준다. – user2864740

+0

IDE의 오류 보호에 의존해서는 안됩니다 –

+1

사용자가 지정한 예제가 모호성 제거가 필요한 명확한 사례이므로이 대답에 동의합니다. "m_"은 낙타 사례 변수 이름의 일반 표준을 따르지 않으며 "this"는 일반적으로 사용되는 표준입니다. –

2

this을 사용하십시오. 정확하게이 용도로 제공되는 Java 구문이며 개발자는이 구문에 익숙하며 여러 가지 경우에서 구문 오류를 줄이는 데 도움이됩니다.

Java에서 필드 이름의 접두어를 붙일 때 발생할 수있는 문제는 getters와 setters를 생성하는 도구가 제대로 작동하지 않는다는 것입니다. 또한 Jackson이나 GSON과 같은 일부 Java Bean 도구는 객체 필드 이름을 매핑하기 위해 매핑을 필요로합니다. 마지막으로 Java 스타일이나 규칙을 따르지 않으므로 maintenance developer은 만족하지 않습니다.