본문 바로가기
반응형

독서이야기43

[아이템6] 불필요한 객체 생성을 피하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 똑같은 기능의 객체를 매번 생성하는 것 보다는 처음 생성된 객체를 통해서 재사용하는 편이 좋을때가 많습니다. 특히 불변객체는 언제든지 재사용할 수 있습니다. 문자열 객체 생성 극단적인 예를 들어보겠습니다. String str = new String("extreme") 위 문장은 실행될때마다 String 인스턴스를 새롭게 만듭니다. 만약 위 문장을 반복문 또는 빈번히 호출하게 된다면 String 인스턴스는 계속 생겨나게 됩니다. 그래서 다음과 같이 사용해야 합니다. String str = "extreme"; 위 문장은 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용합니다. 처음 .. 2022. 9. 3.
[아이템5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 많은 클래스는 하나 이상의 자원에 의존하게 됩니다. 책에 있는 예제인 통해 맞춤법 검사기에 대해서 알아보도록 하겠습니다. 부적절한 구현 아래는 static 유틸 클래스를 통해서 구현하였습니다. public class SpellChecker { private static final Lexicon dictionary = new KoreanDictionary(); private SpellChecket() {} // 객체 생성 방지 public boolean isValid(final String word) { throw new UnsupportedOperationException(); } public Lis.. 2022. 9. 3.
[Unit Testing] 1장 단위 테스트의 목표 [Unit Testing] 1장 단위 테스트의 목표 이 내용은 단위 테스트 생산성과 품질을 위한 단위 테스트 원칙과 패턴 를 읽으면서 정리한 내용을 포함하고 있습니다. 단위테스트 작성을 잘한 소프트웨어는 무난하게 성장하고 유지보수가 많이 필요하지 않으며 끊임없이 변화하는 고객의 요구에 신속히 대응할 수 있습니다. 단위테스트 작성의 노력을 많이 하였다고 해도 많은 버그와 유지비로 프로젝트 진행이 느려지게 됩니다. 단위 테스트 작성과 유지 보수의 목표를 알아보고 테스트 스위트를 잘 작성할 수 있는 방법도 알아보도록 하겠습니다. 단위 테스트 현황 많은 프로젝트에는 자동화된 테스트가 있으며 심지어 많은 테스트가 실행됩니다. 그러나 테스트를 해도 개발자들이 원하는 결과를 얻지 못하는 경우가 많습니다. 프로젝트를 .. 2022. 8. 21.
[아이템4] 인스턴스화를 막으려거든 private 생성자를 사용하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 정적 메소드와 정적 필드 정적 메소드와 정적 필드만을 담은 클래스를 사용할때가 있습니다. java.lang.Math , java.util.Arrays 처럼 기본 타입 값이나 배열 관련 메서드들을 모아놓았습니다. java.util.Collections 특정 인터페이스를 구현하는 객체를 생성해주는 정적 메소드를 모아놓았습니다. 자바 8부터는 정적 메소드를 인터페이스로 생성 가능합니다. final 클래스와 관련한 메소드들을 모아놓았습니다. 정적 멤버만 담은 유틸리티 클래스는 인스턴스로 만들어 쓰려고 설계한 게 아닙니다. 하지만 생성자를 명시하지 않으면 컴파일러가 자동으로 기본 생성자를 만들어줍니다. 즉, .. 2022. 8. 7.
[아이템3] private 생성자나 열거 타입으로 싱글턴임을 보증하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 내용을 알아보기 전, 싱글턴에 대해서 알고 넘어가도록 하겠습니다. 싱글턴 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 싱글턴을 활용한 예로는 무상태 객체(stateless) 또는 설계상 유일해야 하는 시스템 컴포넌트 등 싱글톤의 단점 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트는 테스트하기가 어려워질 수 있다고 합니다. 좋은 객체 지향을 설계하기 위한 원칙 중에서 의존성을 인터페이스로 설계하면 실제 구현 클래스의 내용이 변경되어도 이를 사용한 코드는 영향을 받지 않게 됩니다. 하지만 싱글톤을 사용하는 경우 대부분 인터페이스가 아닌 구현 클래스의 객체를 미리 생성해놓고 정적 팩토리.. 2022. 8. 7.
[아이템2] 생성자에 매개변수가 많다면 빌더를 고려하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 정적 팩토리 메소드와 생성자를 이용하다 보면 제약사항이 생겨지게 됩니다. 매개변수가 많아지면 적절히 대응을 하기가 어려워집니다. 생성자에 매개변수가 많아졌을 경우 어떠한 패턴들을 통해서 처리할 수 있는지 알아보도록 하겠습니다. 점층적 생성자 패턴 주문 아이템 도메인은 테스트용 정적 팩토리 메소드를 포함하여 아래와 같이 사용하고 있습니다. 여기에서 필드가 추가된다면 정적 팩토리 메소드는 점점 추가될 수 있습니다. public class OrderItem { private Long seq; private Long orderId; private Long menuId; private Long quantity.. 2022. 8. 7.
반응형