본문 바로가기

개발 공부125

이펙티브 자바 아이템 5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 완벽 공략 아이템 5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. public class SpellChecker { private final Dictionary dictionary; public SpellChecker(Dictionary dictionary) { this.dictionary = dictionary; } public boolean isValid(String word) { // TODO 여기 SpellChecker 코드 return dictionary.contains(word); } public List suggestions(String typo) { // TODO 여기 Spel.. 2022. 9. 22.
이펙티브 자바 아이템 5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 핵심 정리 아이템 5 - 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 모든 경우에 의존 객체 주입을 사용하는 것이 아니라 사용하는 자원에 따라 동작이 달라지는 클래스의 경우에는 의존 객체 주입을 사용해야한다. public class Dictionary { public boolean contains(String word) { return true; } public List closeWordsTo(String typo) { return Arrays.asList(typo); } } Dictionary 클래스가 있고 public class SpellChecker { private static final.. 2022. 9. 21.
이펙티브 자바 아이템 4 - 인스턴스화를 막으려거든 private 생성자를 사용하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 아이템 4 - 인스턴스화를 막으려거든 private 생성자를 사용하라 - 핵심 정리 인스턴스를 만들지 않는 걸 권장하는 경우가 있다. 특히 유틸리티성 클래스가 이에 해당한다. static 메서드만 가지고 있는 클래스들을 유틸리티성이라고 한다. 대표적으로는 StringUtils 클래스가 있다. public class UtilityClass { public static String hello() { return "hello"; } } static 메서드만 가지고 있는 클래스가 있다. public static void main(String[] args) { String hello = UtilityClass.hel.. 2022. 9. 20.
이펙티브 자바 아이템 3 - 생성자나 열거 타입으로 싱글턴임을 보증하라 - 완벽 공략 이펙티브 자바 아이템 3 - 생성자나 열거 타입으로 싱글턴임을 보증하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 메서드 참조 메소드 하나만 호출하는 람다 표현식을 줄여쓰는 방법이다. 스태틱 메소드 레퍼런스 public class Person { LocalDate birthday; public Person() { } public Person(LocalDate birthday) { this.birthday = birthday; } public int getAge() { return LocalDate.now().getYear() - birthday.getYear(); } public static int compareByAge(Person .. 2022. 9. 20.
이펙티브 자바 아이템 3 - 생성자나 열거 타입으로 싱글턴임을 보증하라 - 핵심 정리 아이템 3 - 생성자나 열거 타입으로 싱글턴임을 보증하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 애플리케이션을 만들다보면 어떤 인스턴스가 애플리케이션에서 하나만 있어야 하는 경우 혹은 하나만 꼭 유지해야하는 경우가 있다. 예를들어 어떤 설정값을 저장하는 인스턴스 등이 있다. 이러한 상황일 때 사용하는 것이 싱글턴이다. 싱글턴을 만드는 방법은 여러가지가 있다. 첫번째 : private 생성자 + public static final 필드 public class Elvis { /** * 싱글톤 오브젝트 */ public static final Elvis INSTANCE = new Elvis(); private Elvis() {} publ.. 2022. 9. 15.
이펙티브 자바 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 - 완벽 공략 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 자바 빈 (주로 GUI에서) 재사용 가능한 소프트웨어 컴포넌트이다. GUI에서 이루어지는 프로퍼티 값을 읽어오거나 값을 저장하거나 하는 등 모든 것들을 정의한게 자바 빈 스펙이다. 자바 빈이 지켜야할 규약에는 다음과 같다. 아규먼트 없는 기본 생성자 아규먼트 없는 기본 생성자를 사용하는 이유는 자바 빈을 사용하는 곳에서 객체를 만들기 쉽게 하기 위해서이다. 자바 빈은 리플렉션을 통해서 객체를 만들고 값을 주입하기 때문에 생성자에 아규먼트가 있으면 리플렉션으로 객체를 만들기가 까다로워진다. getter와 setter 메소드 이름 규약 자바.. 2022. 9. 7.
이펙티브 자바 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 - 핵심 정리 아이템 2 - 생성자에 매개변수가 많다면 빌더를 고려하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 생성자에 매개변수가 많다면 빌더를 고려하자. public class NutritionFacts { private final int servingSize; // 필수 private final int servings; // 필수 private final int calories; // 선택 private final int fat; // 선택 private final int sodium; // 선택 private final int carbohydrate; // 선택 public NutritionFacts(int servingSize, int s.. 2022. 9. 5.
[월간회고] 2022년 08월 회고 월간회고 - 22년 8월 8월달 목표 함께 자라기 다 읽기 - 글을 작성하는(9월 2일 현재 다 읽은 상태) 김영한 님의 JPA 강의 완강하기 들어가기 그 동안의 공부가 주먹구구식으로 진행이 되는 느낌이 있어 이러다가는 이도저도 안되겠다는 생각이 들어 계획을 새우고 체계적으로 공부하기로 했다. 월마다 목표를 정해서 달성해 나가는 형식으로 진행하려 한다. 하루하루 TIL을 GIT 저장소에 작성하고 있다. 되도록이면 주간 단위로도 회고를 작성하고 싶지만 아직 확정되지 않은 일이다. 작성을 하게되어도 주간 단위 회고는 블로그보다는 TIL에 작성할 것 같다. 2020년에도 1일 1커밋을 하다가 실패한 경험이 있다. 그때의 실패의 경험을 토대로 다시 도전해보려한다. 물론 1일 1커밋을 도전한다기보다는 체계적으로 .. 2022. 9. 2.
[독서후기] 함께자라기 함께 자라기라는 책을 읽고 적는 후기글입니다. 이 책을 처음 접하게 된건 https://www.youtube.com/watch?v=l0h1pQ96u2g&list=PLHjQAcZxU8__d36tAOurh8yObI2TlaHDZ&index=8 해당 동영상 덕분이었습니다. 항상 개발자가 개발 공부만 중요한게 아니라 다른 외적인 것들도 중요하다는 말을 많이 들었는데 이 참에 함께 자라기 를 읽어보기로 했습니다. 책을 읽고 참 많은 걸 느꼈습니다. 크게 3가지 챕터로 구성되어있는데 그 중 자라기 챕터와 함께 챕터를 읽고 스스로를 많이 돌아보게 되는 계기가 되었습니다. 책 읽고 느낀점 자라기 자라기 파트에서는 내가 그동안의 학습에서 놓치고 있던 점, 학습을 바라보는 태도에 대해 다시한번 생각해보는 계기가 되었습니다... 2022. 9. 2.
이펙티브 자바 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 - 완벽 공략 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 열거 타입 = Enumeration Enum 이란 상수 목록을 담을 수 있는 데이터 타입이다. public enum OrderStatus { ORDERED, SHIPPED, DELIVERED } 가령 주문의 상태를 나타내는 필드가 있다고 가정해보면 public class Order { private boolean prime; private boolean urgent; private OrderStatus status; public static Order primeOrder() { Order order = new Order(); order... 2022. 8. 26.
이펙티브 자바 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 - 핵심 정리 아이템 1 - 생성자 대신 정적 팩터리 메서드를 고려하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 생성자 대신정적 팩터리 메서드를 고려하자. 주의할 점은 고려하자 이지 강제하는 것이 아니다. 장점 이름을 가질 수 있다. 가령 주문자에게 긴급건으로 배달을 해야하는 주문이 있다고 하자. 자바에서는 동일한 시그니처의 생성자를 두개 가질 수 없기때문에 아래의 코드는 오류가 발생하게 된다. public class Order { private boolean prime; private boolean urgent; public Order(boolean prime) { this.prime = prime; } public Order(boolean ur.. 2022. 8. 22.
[오류 해결] ld: symbol(s) not found for architecture x86_64 에러 프로젝트 진행 중 Fastity-Kafka 설치 중 에러가 발생했습니다. 오류 커맨드 npm i fastify-kafka --save오류 내용 Undefined symbols for architecture x86_64: "_BIO_ctrl", referenced from: _rd_base64_encode in rdkafka_sasl_scram.o "_BIO_f_base64", referenced from: _rd_kafka_sasl_scram_fsm in rdkafka_sasl_scram.o _rd_base64_encode in rdkafka_sasl_scram.o "_BIO_free_all", referenced from: _rd_kafka_sasl_scram_fsm in rdkafka_sasl_scr.. 2022. 1. 25.