본문 바로가기

개발 공부128

이펙티브 자바 아이템 7 - 다 쓴 객체 참조를 해제하라 - 완벽 공략 아이템 7 - 다 쓴 객체 참조를 해제하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. NullPointerException 우리가 코딩을 하다보면 NullPointerException 을 만나는 경우가 종종 발생한다. public class MemberShip { public String hello() { return "hello"; } } MemberShip 클래스를 작성한다. public class Channel { private int numOfSubscribers; public Optional defaultMemberShip() { if (this.numOfSubscribers < 2000) { return null; } els.. 2022. 10. 7.
이펙티브 자바 아이템 6 - 불필요한 객체 생성을 피하라 - 완벽 공략 아이템 6 - 불필요한 객체 생성을 피하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. Deprecation 개발을 하다보면 해당 api 가 바뀌어야하는 경우가 생긴다. 클라이언트가 사용할 수도 있고, 클라리언트가 사용을 하고 있는 api 지만 사용 자제를 권장하는 경우가 있다. public class Deprecation { // TODO 애노테이션 프로세서 @Deprecated public Deprecation() { } } 사용을 자제하고 싶은 api 에 @Deprecated 를 붙이면 컴파일러에서 표시가 된다. public class Client { public static void main(String[] args) { Depr.. 2022. 9. 23.
이펙티브 자바 아이템 6 - 불필요한 객체 생성을 피하라 - 핵심 정리 아이템 6 - 불필요한 객체 생성을 피하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 주의할 점은 객체 생성은 비싸니 피하라 는 뜻이 아니다. 불필요하게 동일한 기능을 함에도 여러번 생성하는 경우가 있는 이런 상황을 피하도록 하자. 문자열 public class Strings { public static void main(String[] args) { String hello = "hello"; //TODO 이 방법은 권장하지 않습니다. String hello2 = new String("hello"); String hello3 = "hello"; System.out.println(hello == hello2); // false - 같은 .. 2022. 9. 22.
이펙티브 자바 아이템 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.