no image
[이펙티브자바 - 아이템6] 불필요한 객체 생성을 피하라
2장. 객체 생성과 파괴 GOAL 1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기 2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법 3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기 아이템6. 불필요한 객체 생성을 피하라똑같은 기능의 객체를 매번 생성하기보다는 객체 하나를 재사용하는 편이 나을 때가 많다.문자열 객체 생성아래 문장은 실행 될때마다 String 인스턴스를 새로 만든다. 이게 for문안에 있으면 String인스턴스가 수백만 개 만들어 질 수 있다.String s = new String("hyeyeon"); //따라하지 말기아래 코드는 하나의 String 인스턴스를 사용한다. 이와 똑같은 문자열 리터럴을 사용하느 모든 코드가 같은 객체를 재사용함..
2021. 9. 18. 21:53
no image
[이펙티브자바 - 아이템5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라
2장. 객체 생성과 파괴GOAL1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기아이템5. 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라대부분의 클래스는 여러 리소스에 의존한다.아래 예시의 경우, 사전을 단 하나만 사용한다고 가정한다는 점에서 단점이다.사전을 어휘용별로 둘 수도 있고, 테스트용 사전도 필요할 수 있다.public class SpellChecker { private static final Lexicon dictionary = new KOreanDictionary(); // 의존하는 리소스 private SpellChecker() {}..
2021. 9. 18. 21:26
no image
[이펙티브자바 - 아이템4] 인스턴스화를 막으려거든 private 생성자를 사용하라
2장. 객체 생성과 파괴 GOAL 1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기 2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법 3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기 아이템4. 인스턴스화를 막으려거든 private 생성자를 사용하라정적 메서드와 정적 필드만을 담은 클래스를 만들고 싶을 때가 있을 것이다. 추상 클래스로 만드는 것으로는 인스턴스화를 막을 수 없다.UtilClass utilClass = new UtilClass() 이것을 막기 위해 public abstact class UtilClass로 선언하면 1차적으로는 막을 수 있다.public class UtilClass { public static String getName() { r..
2021. 9. 18. 21:02
no image
[이펙티브자바 - 아이템3] private 생성자나 열거 타입으로 싱글턴임을 보증하라
2장. 객체 생성과 파괴 GOAL 1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기 2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법 3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기 아이템3. private 생성자나 열거 타입으로 싱글턴임을 보증하라싱글턴(singleton)이란 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말한다. 예시로, 함수와 같은 무상태(stateless) 객체나 설계상 유일해야 하는 시스템 컴포넌트를 들 수 있다. 단점으로는, 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어렵다는 점이다. 싱글톤이 인터페이스를 구현하게 아니라면, mock으로 교체하는게 어렵기 때문이다. 아래는 싱글톤 패턴 예시 코드다.publ..
2021. 9. 18. 20:41
no image
[이펙티브자바 - 아이템2] 생성자에 매개변수가 많다면 빌더를 고려하라
2장. 객체 생성과 파괴 GOAL 1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기 2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법 3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기 아이템2. 생성자에 매개변수가 많다면 빌더를 고려하라정적 팩터리와 생성자에는 똑같은 제약이 있다. 바로, 선택적 매개변수가 많을 때 적절히 대응하기 어렵다는 점이다. 이런 생성자는 사용자가 설정하길 원치 않는 매개변수까지 포함하기 쉬운데, 어쩔 수없이 그런 매개변수에도 값을 지정해줘야한다. 매개변수 개수가 많아지면, 클라이언트 코드를 작성하거나 읽기 어려워진다.NutritionFacts cocaCola = new NutritionFacts(240, 8, 100, 0, 25, 2..
2021. 9. 18. 20:23
no image
[이펙티브자바 - 아이템1] 생성자 대신 정적 팩터리 메서드를 고려하라
2장. 객체 생성과 파괴 GOAL 1. 객체를 만들어야 할 때와 만들지 말아야 할 때를 구분하기 2. 올바른 객체 생성 방법과 불필요한 생성을 피하는 방법 3. 제때 파괴됨을 보장하고, 파괴 전에 수행해야 할 정리 작업을 관리하기 아이템1. 생성자 대신 정적 팩터리 메서드를 고려하라public static Boolean valueOf(boolean b) { return b? Boolean.TRUE : Boolean.FALSE; }클래스는 클라이언트에 public 생성자 대신 정적 팩터리 메서드를 제공할 수 있다.장점.1. 이름을 가질 수 있다.정적 팩터리는 이름만 잘 지으면 반환될 객체의 특성을 쉽게 묘사 가능하다. 코드를 보면 기존에 static메서드를 쓰지 않으면 클래스이름인 Foo로 생성자를 만든다..
2021. 9. 18. 19:22
no image
[이펙티브 자바] 1장 들어가기
시작하게 된 이유이펙티브 자바 책은 유명하다. 완독해서 객체 지향에 대한 이해도를 기르고, 코딩을 더 재미있게 해보고 싶다. 코드리뷰도 더 적극적으로 참여할 것이다.옮긴이의 말동영상 강의 : 네이버 랩스의 백기선 님이 강의를 진행중이시라고한다. 필요하면 같이 들어보자 https://www.youtube.com/watch?v=X7RXP6EI-5E&list=PLfI752FpVCS8e5ACdi5dpwLdlVkn0QgJJ 책과 관련된 깃허브 저장소도 존재한다. 참고하자 https://github.com/WegraLee/effective-java-3e-source-code GitHub - WegraLee/effective-java-3e-source-code: 『이펙티브 자바, 3판』(인사이트, 2018)『이펙티브..
2021. 9. 8. 00:11