필드의 이름은 그것을 소유한 클래스의 이름과 중복되어서는 안됩니다.

 

클래스와 같은 이름의 멤버를 가지는 것은(대소문자를 제외하더라도) 혼란스럽습니다. 이것은 특히 클래스의 인스턴스의 이름을 지정하는 일반적인 관습을 고려할 때 특히 그렇습니다.

클래스의 이름과 같은 멤버나 필드가 나타내거나, 가질 수 있는 특정한 측면을 더 잘 반영하도록 이름을 변경하는 것이 좋은 관습입니다.

규칙을 어긴 코드

public class Foo {
    private String foo;

    public String getFoo() { }
}

Foo foo = new Foo();
foo.getFoo() // 이것은 무엇을 리턴해야 하나요?

규칙을 준수한 해결책

public class Foo {
    private String name;

    public String getName() { }
}

//...

Foo foo = new Foo();
foo.getName()

예외

필드의 타입이 그것을 포함한 클래스이고, 해당 필드가 static 이라면 타입과 같은 이름의 필드를 가지는 것에 대해 문제를 제기하지 않습니다.

public class Foo {
  ...
  private static Foo foo;
  public Foo getInstance() {
    if(foo==null) {
      foo = new Foo();
    }
    return foo;
  }
  ...
}

If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project