티스토리 뷰
✏️ Item 4 : 인스턴스화를 막으려거든 private 생성자를 사용하라
정적 메서드와 정적 필드만을 담은 클래스와 같은 유틸리티 클래스를 만들때는 private 생성자로 인스턴스화를 막아주는 것이 좋다.
추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다.
private 생성자를 사용하면 상속을 불가능하게 만드는 효과도 있다.
✏️ Item 5 : 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
여러 자원에 의존하는 객체는 유연하지 않고, 테스트하기 어려운 경우가 많다. 이럴 때는 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 것과 같은 의존 객체 주입 패턴을 사용하는 것이 좋다. (생성자에 자원 팩터리를 넘겨주는 방법도 있다)
여러 클라이언트가 의존 객체들을 안심하고 공유할 수 있다는 장점이 있다.
✏️ Item 6 : 불필요한 객체 생성을 피하라
똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다.
예시 1. new 로 String 객체를 만들면 같은 문자열임에도 코드가 실행될 때마다 String 인스턴스를 새로 만든다. 때문에 String Pool을 활용해 같은 문자열이면 하나의 인스턴스만 생성되도록 s2와 같은 방식을 선택하는 것이 좋다.
예시 2. 생성자 대신 정적 팩터리 메서드( Boolean.valueOf(String))를 제공하는 불변 클래스에서는 정적 팩터리 메서드를 사용하면 불필요한 객체 생성을 피할 수 있다.
에시 3. 문자열의 정규 표현식을 체크하는 메서드를 만들 때, 정규식이 항상 같다면 String.matches("정규식")를 사용하는 것 보다 Pattern 인스턴스를 미리 만들어두고 이를 사용하는 것이 좋다. String.matches 메서드는 실행될 때마다 내부에서 Pattern 인스턴스를 만들기 때문에 비용이 많이 들고 성능도 좋지 않다.
예시 4. 박싱된 기본 타입보다는 기본 타입을 사용하고, 의도치 않은 오토박싱이 숨어들지 않도록 주의하는 것이 좋다. 오토박싱으로 불필요한 인스턴스가 만들어들어 질 수 있고, 이로 인해 성능이 저하될수 있다.
📌 REFERENCE
책 : EFFECTIVE JAVA 3/E
https://tomining.tistory.com/195
https://lee1535.tistory.com/53
'book_note > EFFECTIVE JAVE' 카테고리의 다른 글
EFFECTIVE JAVA 3/E item 7 ~ 10 (0) | 2022.07.03 |
---|
- Total
- Today
- Yesterday
- Effective Java
- 스프링 부트 테스트
- c#
- 다이내믹 프록시
- 스프링
- Spring
- 영속성
- Nullable
- JpaRepository
- 자바의 정석
- ASP.NET
- JavaScript
- @Modifying
- spring boot
- JPA
- 스프링MVC
- OWIN
- jQuery
- 빌더 패턴
- 고아 객체
- default interface
- DataAnnotation
- uploadfive
- 준영속
- 토비의 스프링
- Java
- C# 문법
- MSSQL
- SpringBoot
- orphanRemoval
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |