# 이펙티브
이펙티브 자바 34
열거 타입 자체는 클래스. 상수 하나당 자신의 인스턴스를 하나씩 생성 public static final 필드로 공개. 사실상 final외부 생성자를 제공하지않기 때문에, 딱 하나만 존재한다는 것이 보장된다. Comparable Serializable 구현.enum 타
이펙티브자바 33
컨테이너 대신 키를 매개변수화한 다음, 컨테이너에 값을 넣거나 뺄 때 매개변수화한 키를 함께 제공type token : 컴파일타임 타입 정보와 런타임 타입 정보를 알아내기 위해 메서드들이 주고 받는 class 리터럴getFavorite 는 처음에 Map 에서 Class
이펙티브자바 - 32
가변인수 메소드를 호출하면 가변인수를 담기 위한 배열이 생성된다. 매개변수화 타입의 변수가 타입이 다른 객체를 참조하면 힙 오염이 발생한다. 컴파일러는 단순히 경고를 던지고, 실행시 castException이 발생한다. 이처럼 타입 안정성이 깨지니 제너릭 배열 매개변수
이펙티브 자바23 - 태그 달린 클래스보다는 클래스 계층구조 활용
태그 달린 클래스의 단점 : 열거 타입 선언, 태그 필드, switch 문 -> 메모리 많이 사용 태그 달린 클래스는 장황하고, 오류를 내기 쉽고, 비효율적이다. 태그 달린 클래스를 클래스 계층 구조로 바꾸는 방법태그 값에 따라 동작이 달라지는 메서드들을 루트 클래스의
이펙티브 자바 22 - 인터페이스 설계 방법
인터페이스는 타입을 정희하는 용도로만 사용.상수 인터페이스 안티 패턴클래스 내부에서 사용하는 상수는 외부 인터페이스가 아니라 내부 구현에 해당. 인터페이스에 정의하는 것은 내부 구현을 클래스의 API로 노출하는 행위.사웃를 공개하려면 유틸리티 클래스에 담아 공개. 상수
이펙티브 자바 20 - 추상보다는 인터페이스
Mixin : 대상 타입의 주된 기능에 선택적 기능을 혼합.인터페이스와 추상 골격 구현 클래스를 함께 제공하는 식으로 인터페이스와 추상 클래스의 장점을 모두 취하는 방법도 존재한다. 인터에피스 : 타입 정의, 디폴트 메서드골격구현 클래스 : 나머지 메서드골격후현 클래스

이펙티브 타입스크립트 | 1장 타입스크립트 알아보기
본 문은 이펙티브 타입스크립트를 읽고 알게된 내용을 정리한 글입니다.타입스크립트는 자바스크립트의 상위 집합(superset)이다.타입스크립트는 타입이 정의된 자바스크립트의 상위집합이다..js 파일에 있는 코드는 이미 타입스크립트이다.즉 main.js 를 main.ts

이펙티브 코틀린 8장 효율적인 컬렉션 처리
컬렉션은 프로그래밍에서 굉장히 중요한 개념이다.컬렉션 처리 최적화는 생각보다 어렵지만 굉장히 중요하다. 특시 백엔드 애플리케이션 개발, 데이터 분석 등의 영역에서는 컬렉션 처리 최적화만 잘해도 프로그램의 전체적인 성능이 향상된다.많은 사람이 Iterable과 Seque

이펙티브 코틀린 6장 클래스 설계
컴포지션은 번거롭지만 일반적으로 상속을 사용하는 것보다 좋습니다. 리스코프 치환원칙을 만족하는 경우에만 상속을 사용해야 합니다. 상속은 다음 문제를 가지고 있습니다.클래스에만 적용할 수 있습니다.클래스의 모두를 재사용합니다.이해하기 어렵습니다.캡슐화를 망가뜨립니다.데

이펙티브 코틀린 5장 객체 생성
객체를 만들어내는 방법을 추상화하는 방법으로 팩토리 함수가 있음. 코틀린은 팩토리 함수를 만들수 있는 다음과 같은 다양항 방법을 제공한다.Companion 객체 팩토리 함수확장 팩토리 함수톱레벨 팩토리 함수가짜 생성자팩토리 클래스의 메서드 코틀린에서는 객체를 생성할

이펙티브 코틀린 4장 추상화 설계
추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려내는 것을 의미한다.조금 간단히 표현하면, 추상화는 복잡성을 숨기기 위해 사용되는 단순한 형식을 의미한다.ex. 인터페이스 → 클래스라는 복잡한 것에서 메서드와 프로퍼티만 추출해서 간단하게

이펙티브 코틀린 3장 재사용성
3장 재사용성 Item 19 knowledge를 반복하여 사용하지 말라 "프로젝트에서 이미 있던 코드를 복사해서 붙여넣고 있다면, 무언가가 잘못된 것이다." Don't Repeat Yourself(DRY) = WET 안티패턴 knowledge 프로그래밍에서 k

이펙티브 코틀린 2장 가독성
2장까지 읽으면서 느낀점은 이 책에서는 굉장히 당연한 이야기들을 서술한듯한 느낌을 받는다.(반론의 여지가 딱히 없는?)사람에 따라서 가독성에 대한 관점이 다르다, 많은 개발에서 함수 이름을 어떻게 지어야 하는지, 어떤 것이 명시적이여야 하는지, 어떤 것이 암묵적이어야

이펙티브 코틀린 1장 안정성
현직자 멘토링 F-Lab에서 멘티 및 수료생을 대상으로 이펙티브 코틀린 온/오프라인 스터디를 참여하였습니다.1주마다 각자 1장씩을 맡아서 브리핑하고 아젠다를 제시하면 그에 따라 다같이 토론 형태로 스터디를 진행합니다.먼저 1장에서 다루는 안정성에 대한 아젠다와 개인적으
이펙티브자바 정리 6
타입을 명시해야 코드가 더 명확할 때를 제외하고는 람다의 모든 매개변수 타입은 생략해라람다는 이름이 없고 문서화도 못함으로 코드 자체로 동작이 명확히 설명되지 않거나 코드 줄이 많아지면 쓰지말아야 한다람다를 직렬화 하지 말아라익명 클래스는 타입의 인스턴스를 만들 떄만
이펙티브자바 정리 5
열거 타입은 클래스이며, 상수 하나당 자신의 인스턴스를 하나씩 만들어 public static final 필드로 공개함열거타입은 final(밖에서 접근하는 생성자를 제공하지 않음으로) → 인스턴스는 딱 하나씩 밖에 존재하지 않음을 보장열거 타입 상수 각각을 특정 데이터
이펙티브자바 정리 4
제네릭 클래스(제네릭 인터페이스) : 클래스와 인터페이스 선언에 타입 매개변수가 쓰이는 것을 말함ex) List 는 List라고 쓰기도 한다→ 이를 통틀어서 제네릭 타입이라고 한다제네릭의 매개변수화 타입 → List 원소의 타입이 String인 리스트를 뜻함제네릭 타입
이펙티브자바 정리 3
정보은닉, 캡슐화의 장점개발속도 증진 → 병렬 개발관리비용 낮춤 → 디버깅, 컴포넌트 파악 유리성능 최적화재사용성 증가→ 모든 클래스와 멤버의 접근성을 가능한 좁혀야 함클래스 멤버 접근 제한자private: 멤버를 선언한 톱레벨 클래스에서만 접근 가능package-pr