본문 바로가기

반응형

Effective Java 3rd/Chapter 2. 객체 생성과 파괴

(6)
Item 6. 불필요한 객체 생성 금지 Boxing type 대신 Primitive Type 을 권장한다. Util Class 에서 또한 Primitive type 을 권장한다. 그렇다고 항상 primitive type이 옳은 것은 아니다. 대표적인 Null case에 대해 price가 0인 것과 null인 것의 의미는 다르다. Boxing type은 null을 가질 수 있다. 주의해야 할 내장 Method 위와 같이 isEmailValid를 할 때 매 번 Pattern 인스턴스를 생성하는 꼴이다. Pattern instance가 한 번만 생성되게끔 하려면 위와 같이 static하게 Pattern instance를 낭비하지 않게 만들 수 있다. 주의 무심결에 Instance를 과도하게 생성하지는 않았는지 Primitive Type 과 Boxi..
Item 5. Resource를 직접 명시하지 말고, Dependency Injection을 사용하라 @Value 를 사용해서 프로퍼티를 인젝션하는 것이 좋다. → application.yml 같은 것을 프로퍼티로 사용 Property Injection Constructor Injectionn의 경우 Test, flexibility를 높일 수 있다. parameter 자체를 주입받자.. Config Class를 생각없이 사용하고 있지는 않았는지 Singleton을 이해하고 있는지 Dependency Injection (DI)를 잘 이해하고 있는지
Item 4. Instance화를 막으려면 private constructor를 사용하라 Instance 를 막는 Util Class private static final String PATTERN = ""; 누군가를 믿지 못할 상황이 있고, Human error를 방지하기 위해 private constructor를 권장한다. @Configuration 상식 쌓기 차원에서 @Configuration은 @Component를 포함하고 있고,
Item 3. private constructor 나 enum Type으로 Singleton임을 보증하라. INSTANCE가 초기화 되고 나면 고정이 된다. 생성자를 private로 해서 의도치 않은 생성자를 만들지 못하게 할 수 있다. 상황에 따라 synchronized 나, lazy하게 instance를 생성하는 방법도 있다. Enum Type으로 Singleton Pattern 을 사용할 수 있다.
Item 2. 많은 parameter가 있는 Constructor는 Builder를 고려하라 여러 개의 Constructor를 둘 경우와 Java beans Pattern(Setter) 를 사용하게 되면 너무 각 속성에 무엇이있는지 혼란을 초래할 수 있다. 여러 에러체크를 하는데에 어려움이 있을 수 있다. 필수 요소를 빼먹을 수도 있다. 같은 데이터 타입일 경우 문제가 생길 수 있다. 객체를 생성할 때, Setter를 많이 쓰면 코드가 지저분해질 수 있다. Lombok을 통하면 훨씬 더 Simple해 질 수 있다. @Bulder(builderMethodName = "hiddenBuilder") @Builder.Default private final int calories = 0; @ 상속받은 Class의 Builder가 정의한 build 메서드가 상위 메서드의 타입을 return하는 것이 아닌 ..
Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라 Constructor 와 Static Factory method의 비교 생성자 대신에 Static Factory Method → 이름을 가지는 메서드.. 객체 하나를 가져와서 컨버팅하는 것이라면 from ofModelNameAndCompany 명확하게 재료를 알고 of 를 사용함 Api request with LptopForm 랩탑에 대한 정보를 받아서 추가하게 될텐데, 그리고 Dto를 리턴할 경우 LaptopForm → 밖에서 받는 request 라는걸 표현.. Laptop으로 convert해줄 필요가 있을 경우 from static method만들기.. 바로 새로운 인스턴스 Form을 받아서 새로운 인스턴스를 생성한다고 인지 할 수 있다. from~, of~ Response할 때에도 사용 가능함 장점..

반응형