분류 전체보기150 이펙티브 자바 아이템 15 - 클래스와 멤버의 접근 권한을 최소화하라 - 핵심 정리 아이템 15 - 클래스와 멤버의 접근 권한을 최소화하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 정보 은닉의 장점 정보 은닉의 장점은 다음과 같다. 시스템 개발 속도를 높인다. 정보 은닉을 하려다보면 자연스럽게 인터페이스 를 설계하게 된다. 어떤 인터페이스의 설계를 마치고 나면 그 인터페이스를 사용하는 쪽은 그 인터페이스에 맞게 개발을 하면 된다. 그 인터페이스를 구현하는 쪽 역시 해당 인터페이스에 정의되어 있는 대로 동작할 수 있는 클래스를 개발하면 된다. 이렇게 인터페이스를 사용하는 쪽과 제공하는 쪽이 동시에 개발 진행이 가능하다. 동시에 여러 모듈을 개발하는 것도 가능하다. 시스템 관리 비용을 낮춘다. 인터페이스를 통해 각 컴포.. 2022. 11. 8. [강의 후기] 백기선 님의 이펙티브 자바 완벽 공략 1부 https://www.inflearn.com/course/%EC%9D%B4%ED%8E%99%ED%8B%B0%EB%B8%8C-%EC%9E%90%EB%B0%94-1 이펙티브 자바 완벽 공략 1부 - 인프런 | 강의 자바 학습의 끝판왕 “이펙티브 자바”를 보다 쉽고 완벽하게 학습하세요. 이 강의를 수강하시면 여러분의 자바 프로그래밍 지식과 실력뿐 아니라 학습 능력 또한 향상 시킬 수 있습니다., - 강 www.inflearn.com 백기선 님의 이펙티브 자바 완벽 공략 1부 강의 후기입니다. 이펙티브 자바는 자바 개발자들에겐 수학의 정석과도 같은 책입니다. 좋은 책이고 좋은 내용이다 해서 마구잡이로 들이댈 수 없는 책이기 때문인데, 저같은 경우에는 더 멀게만 느껴지던 책이었습니다. 공부할 것들은 산더미처럼 쌓.. 2022. 11. 1. 이펙티브 자바 아이템 14 - Comparable 을 구현할지 고민하라 - 완벽 공략 아이템 14 - Comparable 을 구현할지 고민하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. compareTo 메서드의 인수 타입은 컴파일타임에 정해진다. 제네릭 인터페이스에 제네릭 타입을 선언해주면 구체적인 타입을 컴파일 타임에 인수타입이 정해진다. 컴파일 타임 은 작성한 코드가 컴파일 되는 시점을 의미한다. 어떠한 경우든 컴파일 타임 에 문제를 찾는게 더 좋다. 런타임 에서 문제가 발생했다는 것은 문제를 발견하는데까지 시간이 오래걸린다는 의미다. 런타임 에서 발생하는 문제를 해결하는 게 더 까다롭다. Equals 같은 경우 해당 타입이 맞지 않는다는 오류는 런타임 에서 발생한다. 실제로 어떤 오브젝트가 메서드에 들어올지는 런.. 2022. 10. 31. 이펙티브 자바 아이템 14 - Comparable 을 구현할지 고민하라 - 핵심 정리 아이템 14 - Comparable 을 구현할지 고민하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. Comparable 은 Object 가 제공하는 메서드는 아니지만 일반적으로 널리 사용할 수 있는 인터페이스 이다. Comparable 은 엘리먼트가 지닌 자연적인 순서(natural order) 를 정해줄 때 사용하는 인터페이스이다. Comparable 은 우리가 비교해주고 싶은 순서가 있는 경우에 그 비교 방법을 구현할 수 있다. Comparable 은 제네릭 타입 을 가지고 있기 때문에 컴파일 타임 에 체크가 가능한 장점이 있다. compareTo 를 재정의 할때는 몇가지 규약이 있다. compareTo 규약 compareTo 메서.. 2022. 10. 31. [리뷰 이벤트] 이것이 자바다 이 글은 okky에서 진행된 이것이 자바다 리뷰 이벤트를 통해 작성되었습니다. 운 좋게 이벤트에 당첨되어서 이것이 자바다 라는 책을 받았습니다. 자바는 현재 17 버전까지 나온 상태입니다. 최근 자바 기본서를 통해 기초를 다지려고 책을 찾아보던 중에 느낀점은 요즘 나온책이 거의 없다 입니다. 그러던 중 이것이 자바다 라는 책이 개정판으로 재출간한다는 소식을 접했습니다. 장점 이 책의 장점으로 가장 크게 꼽는 건 자바 17LTS 버전까지 대응하는 내용이 추가되었다는 것입니다. 기존의 책들이 예전에 나온책이기 때문에 아무래도 오래된 책들로 공부하는 건 찜찜함이 있기 마련입니다. 이것이 자바다는 예전부터 유명했던 이것이 000다 시리즈 중 하나이기 때문에 더 믿고 공부할 수 있게되었습니다. 두번째 장점으로는 .. 2022. 10. 28. 이펙티브 자바 아이템 13 - clone 재정의는 주의해서 진행하라 - 완벽 공략 아이템 13 - clone 재정의는 주의해서 진행하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. UncheckedException 우리는 보통 UncheckedException 을 선호햔다. public class MyException extends RuntimeException { } UncheckedException 은 RuntimeException 을 상속 받은 Exception 이다. public class MyException extends Error { } Error 를 상속받은 클래스들 역시 UncheckedException 이라고 부를 수 있다. RuntimeException 과 Error 를 확장한 클래스들은 Unche.. 2022. 10. 28. 이펙티브 자바 아이템 13 - clone 재정의는 주의해서 진행하라 - 핵심 정리 아이템 13 - clone 재정의는 주의해서 진행하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. clone 규약 clone 메서드는 Object 에 정의되어있는 메서드이다. public interface Cloneable { } 아무것도 정의되어 있지 않은 Cloneable 인터페이스가 존재한다. clone 메서드를 구현하려면 Cloneable 인터페이스를 implements 해야한다. Cloneable 인터페이스를 implements 하지 않으면 clone 메서드 는 동작하지 않는다. 오브젝트에 정의되어있는 clone 메서드 기능을 제공하기 위해서는 Cloneable 인터페이스를 implements 한다. clone 메서드 를 오버라.. 2022. 10. 27. 이펙티브 자바 아이템 12 - toString 을 항상 재정의하라 - 핵심 정리 아이템 12 - toString 을 항상 재정의하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 오브젝트에서 기본적으로 제공하는 toString 은 클래스이름@16진수로 표시한 해시 코드 의 형태이다. 이런 기본적인 형식은 딱히 유용하지가 않다. 인스턴스에 문자열을 연산하면 인스턴스에 있는 toString 이 자동으로 호출된다. toString 은 우리가 원하는 형태로 표현을 해주면 좋다. 특히 값 클래스의 경우에는 어떤 형태로 toString 의 형식이 되는 문서화 를 하면 좋다. public final class PhoneNumber { private final short areaCode, prefix, lineNum; public .. 2022. 10. 26. 이펙티브 자바 아이템 11 - equals 를 재정의하려거든 hashCode 도 재정의하라 - 완벽 공략 아이템 11 - equals 를 재정의하려거든 hashCode 도 재정의하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 해시맵 내부의 연결 리스트 자바8 이전 까지는 해시 충돌 발생시 링크드 리스트 를 사용했다. 이때 링크드 리스트 는 해시맵 내부 에 구현되어 있는 링크드 리스트를 사용했다. 링크드 리스트에서 데이터를 추가 할때 성능은 O(1) 이다. 링크드 리스트에서 데이터를 조회 할때 성능은 O(n) 이다. 해시 충돌 이 자주 발생할수록 해당 버킷 에 들어있는 링크드 리스트 에서 값을 꺼낼때 성능이 저하된다. 자바8 버전부터는 성능 최적화를 위해 링크드 리스트 대신에 이진 트리 를 사용하도록 바뀌었다. 이진 트리 에서 값을 꺼낼 때.. 2022. 10. 26. 이펙티브 자바 아이템 11 - equals 를 재정의하려거든 hashCode 도 재정의하라 - 핵심 정리 아이템 11 - equals 를 재정의하려거든 hashCode 도 재정의하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. equals 메서드를 구현할 때는 반드시 hashCode 도 구현해야한다. equals 메서드와 hashCode 는 같이 정의되어 있지 않다면 잘못된 코드이다. hashCode 를 구현할 때는 몇가지 규약 이 존재한다. equals 메서드에서 사용하는 값이 변경되지 않았다면 hashCode 는 몇번이 실행 되더라도 동일한 값 을 리턴해야한다. 두 객체를 equals 메서드로 비교했을 때 같은 객체 로 나온다면 두 객체의 hashCode 값도 같아야 한다. 성능을 고려해 다른 객체라면 다른 hashCode 를 리턴하는 .. 2022. 10. 25. 이펙티브 자바 아이템 10 - equals 는 일반 규약을 지켜 재정의하라 - 완벽 공략 아이템 10 - equals 는 일반 규약을 지켜 재정의하라 - 완벽 공략 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. Value 기반 클래스 value object, 혹은 값 클래스라고도 한다. DDD 에서 나오는 value object 나 값처럼 사용이되는 클래스나 객체를 의미한다. 값 클래스란 int 와 String 처럼 값을 표현하는 클래스를 말한다. 값 클래스는 객체의 유일성을 판단하기 위한 식별자가 없다. 그 클래스의 인스턴스가 가지고 있는 필드의 값들이 그 오브젝트를 대변하게 된다. public class Point { private final int x; private final int y; public Point(int x, int y.. 2022. 10. 24. 이펙티브 자바 아이템 10 - equals 는 일반 규약을 지켜 재정의하라 - 핵심 정리 아이템 10 - equals 는 일반 규약을 지켜 재정의하라 - 핵심 정리 이 글은 백기선 님의 이펙티브 자바 강의와 이펙티브 자바 3 / E 편을 참고하여 작성하였습니다. 모든 클래스는 전부 Object 클래스를 상속 받는다 Object 클래스에 있는 메서드를 오버라이딩 할 수 있다. 이번 아이템에서는 equals 메서드 에 대해서 다룬다. equals 메서드는 직접 구현할 때도 있고 아닐 때도 있지만 보통은 IDE 나 Tool 을 사용해 equals 메서드를 정의하게 된다. equals 메서드 를 만들지 않아도 된다면 만들지 않는게 최선이다. equals 메서드 를 만들지 않아도 되는 상황은 다음과 같다. 각 인스턴스가 본질적으로 고유할 때. 싱글톤 패턴을 구현했다고 가정해보자. 그 Object는 그.. 2022. 10. 19. 이전 1 2 3 4 5 6 7 8 ··· 13 다음