[TIL] 230301

✏️ Check Box

📌 정리


아이템5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라

많은 클래스가 하나 이상의 자원에 의존하고, 이 자원에 여러 종류의 인스턴스를 사용하려 한다면 기존의 정적 유틸리티 클래스나 싱글턴은 적절하지 않은 방법이다. 즉, 사용하는 자원에 따라 동작이 달라지는 클래스에 두 방법은 적합하지 않다는 것이다.

따라서 인스턴스를 생성할 때 생성자에 필요한 자원을 넘겨주는 의존 객체 주입 방식을 사용한다.

해당 아이템은 Spring 프레임워크를 공부하고 있는 나에겐 익숙한 설명들이었다. DI 방식중 생성자 주입 방식으로 Spring Container 관리하고 있는 Bean 객체를 주입받아 코드를 작성하고 있었기 때문이다.

아이템6. 불필요한 객체 생성을 피하라

아이템 제목에 적절한 예시로 new String("string)"string" 리터럴 방식을 비교하면서 설명을 시작했다. 강조하는 기존 객체를 재사용해야 한다면 새로운 객체를 만들지 마라에 맞게 리터럴 방식으로 String 인스턴스를 생성해야 같은 문자열 리터럴을 사용하는 코드가 같은 객체를 재사용함을 보장한다.

설명에선 정적 팩토리 메서드의 사용, String의 matches() 메서드에 사용되는 Pattern 인스턴스를 재사용, Map의 ketSet()메서드, 불필요한 오토박싱 제거 등으로 불필요한 객체 생성을 피할 수 있다고 설명한다.

String과 오토박싱 관련 퍼포먼스에 대해서는 익히 들어서 알고 있었다. 즉, 불필요한 객체 생성이 코드의 형태와 성능에 영향을 주는 것에 관해서 유의하며 코드를 작성하는 습관을 들이도록 해야겠다.

Back to [TIL] 230217