본문 바로가기
반응형

전체 글89

[Effective Java] 아이템 23 4장...에서의 정리는 여기까지.... [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 23] 태그 달린 클래스보다는 클래스 계층 구조를 활용하라 태그? 해당 클래스가 어떠한 타입인지에 대한 정보를 담고있는 맴버 변수를 의미한다! 단점 쓸데없는 코드들이 많다. 태그에 대한 선언이 필요하기 때문에 열거형 타입 선언, 태그 필드, switch 문 등 쓸데 없는 코드들이 많아진다. 태그에 따른 메서드의 행동이 달라져야 하기 때문에 switch 문이 많아져 가독성이 떨어진다. 메모리를 많이 사용한다. 다른 행동을 위한 코드도 정의되기 때문에 메모리도 많이 사용하게 된다. 불필요한 초기화가 필요하다. 필드를 fina.. 2023. 1. 24.
[Effective Java] 아이템 18 으아아ㅏㅇ 너무 많이 남았어! [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 18] 상속보다는 컴포지션을 사용하라 상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다! 잘못 사용하면 오류를 내기 쉽다! 컴포지션(composition)? Has-a 관계를 구현하기 위한 설계 기술. (상속은 is-a 관계) 기존 클래스를 확장하는 대신 새로운 클래스를 만들고 private 필드로 기존 클래스의 인스턴스를 참조하는 방법을 통해 기능을 확장 시키는 것! 새로운 클래스의 인스턴스 메서드들은 private 필드로 참조하는 기존 클래스의 대응하는 메서드(forwarding method)를 호출해 그 결과를.. 2023. 1. 24.
[Effective Java] 아이템 5 [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 5] 자원을 직접 명시하지 말고 의존 객체 주입을 사용하라 유틸리티 클래스? 프로젝트 진행시 여러 클래스에서 공통적으로 사용되는 메서드가 발생할 수 있다. 이때, 관련된 메서드들끼리 모아서 클래스로 만든다면 중복된 코드가 발생하지 않고 효율적으로 관리할 수 있다. 이를 Utility Class 또는 Helper Class 라고 한다! public class SpellChecker { // 정적 유틸리티를 잘못 하용한 예 - 유연하지 않고 테스트하기 어렵다. private static final Lexicon dictionary = ""; private Spel.. 2023. 1. 24.
[Effective Java] 아이템 17 으아아아ㅏ아ㅏㅏ 최소 2개여서.... 17까지는 하고 자자ㅏㅏㅏㅏㅏ..... [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 17] 변경 가능성을 최소화 하라 불변 클래스란? 인스턴스의 내부 값을 수정할 수 없는 클래스다. 불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. 불변 객체는 근본적으로 스레드 안전하여 따로 동기화할 필요 없다. 여러 스레드가 동시에 사용해도 절대 훼손되지 않는다. 불변 객체에 대해서는 그 어떤 스레드도 다른 스레드에 영향을 줄 수 없다. 불변 객체는 자유롭게 공유할 수 있음은 물론, 불변 객체끼리는 내부 데이터를 공유할 수 있다. 불변 객체는 .. 2023. 1. 18.
[Effective Java] 아이템 15 으아아아 내일 스터디인데 스터디 할꺼 많아져서 블로그를 이제쓴다.... 책 읽기도 힘들었따...... [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 15] 클래스와 멤버의 접근 권한을 최소화하라 잘 설계된 컴포넌트의 가장 큰 차이는 클래스의 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 정보 은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리이다. 정보은닉(캡슐화) 장점 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부.. 2023. 1. 18.
[Effective Java] 아이템 13 이장은 간단히 하고 넘어가겠다! [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 13] clone 재정의는 주의해서 진행하라 실무에서 Cloneable을 구현한 클래스는 clone 메서드를 public으로 제공하며, 사용자는 당연히 복제가 제대로 이뤄지리라 기대한다. 이 기대를 만족시키려면 그 클래스와 모든 상위 클래스는 복잡하고, 강제할 수 없고, 허술하게 프로토콜을 지켜야만 하는데, 그 결과로 깨지기 쉽고, 위험하고, 모순적인 메커니즘이 탄생한다. 생성자를 호출하지 않고도 객체를 생성할 수 있게 되는 것이다. Clone 메서드는 사실상 생성자와 같은 효과를 낸다. 즉, clone은 원본 객체에 아무런 해.. 2023. 1. 10.
[Effective Java] 아이템 10 ~ 아이템 11 으어어ㅓㅓ어 맨날 스터디 전날에 공부해.... [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 10] equals는 일반 규약을 지켜 재정의하라! [아이템 11] equals를 재정의하려거든 hashCode도 재정의하라!!!!! equals는 아예 재정의 하지 않는것이 아주 좋다고한다! 그냥 둔다면 그 클래스의 인스턴스는 오직 자기 자신과만 같게 된다. 그러니 다음에서 열거한 상황 중 하나에 해당한다면 재정의 하지 않는 것이 최선이다. 각 인스턴스가 본질적으로 고유하다. 값을 표현하는 게 아니라 동작하는 개체를 표현하는 클래스가 여기 해당한다. Thread가 좋은 예로, Object의 equals 메서드는 .. 2023. 1. 10.
[Effective Java] 아이템 3 이제... 아이템 3.... 미리 공부 해놓자... [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 3] 생성자나 열거 타입으로 싱글턴임을 보증하라. 싱글턴 패턴이 궁금하다면! 내 글을 참고! (낄낄) https://lima1016.tistory.com/93 [Design Patterns] Singleton Pattern feat. 백기선 강사님 하루 1강씩이라도 듣자는 의지를 계속 실천하고있따!!!! 할수있다!! 잘한다 잘한다 잘한다 자! 오늘의 복습! 시작! Singleton Pattern이 뭐야? - 인스턴스를 오직 한개만 제공하는 클래스! 개념은 알겠 lima1016.tistory.com 싱글턴이란 .. 2023. 1. 3.
[Effective Java] 아이템 2 아~~ 오늘 아이템 9번까지 해야하는데에ㅔ에ㅔㅔㅔㅔ 뿌액 [책 규칙] 노란색 - 자세히 알아보고싶은 부분 초록색 - 핵심 개념 (블로그 정리시는 검은색으로!) 빨간색 - 무슨말인지 모르겠는 부분 [아이템 2] 생성자에 매개변수가 많다면 빌더를 고려하라! 점층적 생성자 패턴도 쓸 수는 있지만, 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다. 점층적 생성자 패턴 필수 매개변수만 받는 생성자, 필수 매개변수와 선택 매개변수 1개를 받는 생성자, ... 형태로 선택 매개변수를 전부 다 받는 생성자 까지 늘려가는 방식 단점 매개변수 개수가 많아지면 클라이언트 코드를 작성하거나 읽기 어렵다. 클라이언트가 실수로 매개변수의 순서를 바꿔 건네줘도 컴파일러는 알아채지 못하고, 결국 런타임에 엉뚱한 동.. 2023. 1. 3.
반응형