2017-05-12 3 views
0

아래 코드의 생성자에서 초기화 문을 제거하는 것이 더 좋습니까?Java에서 문자열 및 열거 형 변수를 명시 적으로 초기화 하시겠습니까?

class Dog { 

    private String name; 
    private Type type; 

    public Dog() { 
     this.name = null; 
     this.type = null; 
    } 

    public static Enum Type { 
     large, medium, small; 
    } 
} 
+3

그들은 적어도 쓸모가 없습니다. 기본값은 모두 null입니다. – Marvin

+0

어쩌면 조금 더 명확할까요? – user697911

+0

나는 그렇게 생각하지 않지만 분명히 어떤 사람들에게는 그렇다고 생각한다. 다른 한편으로 나는 한 시간 동안 (매우 특별한 경우 라 할지라도) _caused by_ 초기화를 'null'로 추적하는 데 몇 시간을 보냈다. – Marvin

답변

0

이런 종류의 질문은 많은 의견을 이끌어내는 경향이 있으며,이 대답도 마찬가지입니다. 다음은 대학에서의 수업 방식입니다 :

모든 변수 (최종 변수)가 표준값 (null, 0, ...)과 같을 경우에도 기본값을 선언하십시오. 그 이유는 명시 적으로 정의하지 않으면 변수의 기본값이 null이된다는 것을 쉽게 알 수 있기 때문입니다.

는 그래서는 다음과 같습니다
class Dog { 

    private String name = null; 
    private Type type = null; 

    public Dog(){} 

    public static Enum Type { 
     large, medium, small; 
    } 
} 

이 깨끗한 코드에 대한 단순한 의견임을 기억하십시오. 둘 다 똑같은 방식으로 행동합니다.

+0

@Alex의 대답을 받아 들여야합니다. 장단점을 가진 모든 사례를 명확한 방법으로 설명합니다. –

1

그것은 어떤 의미에서 더 나은가요?

위에서 짧은 정리 코드를 사용하면이 값이 좋습니다. 다음 예는 다음과 같습니다

초기화되지 않은 Objectnull로 시작하기 때문에이 작동
class Dog { 
private String name; 
private Type type; 

public static enum Type { 
    large, medium, small; 
} 

. 또한 빈 생성자를 지정할 필요가 없습니다.

당신은 선명도를 높이 평가하지만 여전히 가능한 한 짧은 코드를 유지하려면, 다음 기타 (경험이 적은)의 devs 명확하게 값이 무엇인지 볼 수 있기 때문에

class Dog { 
    private String name = null; 
    private Type type = null; 

    public Dog() {} 

    public static enum Type { 
     large, medium, small; 
    } 
} 

더 나은, 그리고 생성자는 명확 경우 한정된. 미래에 로직을 추가 할 값/논리

  • 유연성에서

    • 분명히 별도의 선언이 필요 (확장) 그냥

    :

    또한 자신의 장점이 생성자에서 상수 값을 초기화 각 상황에 대한 장단점을 평가하고, 당신이 좋아하는 것을보십시오. 유일한 예외는 기존 코드베이스로 작업 할 때입니다. 이 경우 대회/스타일 가이드를 준수하십시오.