전체 글(126)
-
1장 : 코틀린이란 무엇이며 왜 필요한가
# 함수형 프로그래밍 특징 1. 일급 시민인 함수 : 함수를 일반 값처럼 다룰 수 있음 2. 불변성 : 내부 상태가 절대로 바뀌지 않음 3. 부수효과 없음 : 입력이 같으면 항상 출력이 같음. 다른 객체 상태를 변경하지 않음. 외부와 상호작용하지 않는 순수 함수를 사용 4. 간결하고 우아함 5. 다중 스레드를 사용해도 안전 6. 테스트하기 쉬움 - 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어 : 소스코드의 정확성과 성능을 보장하면서도 소스코드를 간결하게 유지 가능 - OOP, FP 모두 지원 - 안드로이드 활용 가능, 무료, 오픈소스, IDE 지원, 안전, 간결, 상호운용성 높음 - 자바와 호환 좋음
2023.04.09 -
8장 : 메서드
아이템 49. 매개변수가 유효한지 검사하라 - 매개변수 값이 잘못됐을 때 던지는 예외를 문서화해야 - 나중에 쓰기 위해 저장하는 매개변수는 특히 더 신경 써서 검사해야 - 유효성 검사 비용이 지나치게 높거나 실용적이지 않을 때, 혹은 계산 과정에서 암묵적으로 검사가 수행될 때는 검사 패스해도 됨 아이템 50. 적시에 방어적 복사본을 만들라 - 클라이언트가 여러분의 불변식을 깨뜨리려 혈안이 되어 있다고 가정하고 방어적으로 프로그래밍해야 - 생성자에서 받은 가변 매개변수를 각각 방어적으로 복사해야 - 매개변수가 제 3자에 의해 확장될 수 있는 타입이라면 방어적 복사본을 만들 때 clone 사용해서는 안 됨 - 인스턴스를 복사하는 데는 일반적으로 생성자나 정적 팩터리를 쓰는 것이 좋음 - 그 객체가 잠재적으로..
2023.04.06 -
7장 : 람다와 스트림
아이템 42. 익명 클래스보다는 람다를 사용하라 - 타입을 명시해야 코드가 더 명확할 때만 제외하고는, 람다의 모든 매개변수 타입은 생략 - 타입을 알 수 없다는 오류를 낼 때만 해당 타입을 명시 - 람다는 이름이 없고 문서화도 못함. 따라서 코드 자체로 동작이 명확히 설명이 되지 않거나 코드 줄 수가 많아지면 람다를 쓰면 안 됨 - 람다는 한 줄 일 때 가장 좋고, 길어야 세 줄 안에 끝내야 - 람다에서의 this 키워드는 바깥 인스턴스를 가리킴 - 함수 객체가 자신을 참조해야 한다면 반드시 익명 클래스를 써야 - 람다를 직렬화 X 아이템 43. 람다보다는 메서드 참조를 사용하라 - 람다로 할 수 없는 일이라면 메서드 참조로도 할 수 없음 아이템 44. 표준 함수형 인터페이스를 사용하라 # 함수형 인터..
2023.04.06 -
6장 : 열거 타입과 애너테이션
아이템 34. int 상수 대신 열거 타입을 사용하라 - 열거 타입 : 일정 개수의 상수 값을 정의한 다음, 그 외 값은 허용하지 않는 타입 - 자바의 열거 타입은 완전한 형태의 클래스 - 생성자를 제공하지 않으므로 사실상 final - 열거 타입은 싱글턴을 일반화한 형태 - 열거 타입은 컴파일 타임 타입 안정성 제공 - 고차원 추상 개념 하나를 완벽하 표현 가능 - 열거 타입에 추상 메서드를 통해 각 상수별 클래스 몸체를 재정의 가능 - 상수별 메서드 구현을 상수별 데이터와 결합 가능 - 열거 타입 상수는 생성자에서 자신의 인스턴스를 맵에 추가할 수 없음 - 열거 타입 정적 필드 중 열거 타입 생성자에서 접근할 수 있는 것으 상수 변수 뿐 - 열거 타입 생성자에서 같은 열거타입의 다른 상수에도 접근할 ..
2023.04.06 -
5장 : 제네릭
아이템 26. 로 타입은 사용하지 말라 - 로타입은 전 코드와 호환되도록 하기 위한 궁여지책 - 오류는 가능한 발생 즉시, 이상적으로는 컴파일시 발견하는 것이 좋음 - 로타입을 쓰면 제네릭이 안겨주는 안정성과 표현력 모두 잃게 됨 - List 쓸 바에 List 쓰자 : 모든 타입을 허용한다는 것을 컴파일러에게 명확히 전달 - 어떤 타입이라도 담을 수 있는 가장 벙용적인 제네릭을 만들려면 와일드카드 타입 사용 - class 리터럴에는 로 타입을 써야함 - instanceof 연산자는 비한정적 와일드카드 타입 이외의 매개변수화 타입은 적용 불가 아이템 27. 비검사 경고를 제거하라 아이템 28. 배열보다는 리스트를 사용하라 공변 : Sub가 Super의 하위 타입이면 배열 Sub[] 는 Super[]의 하위..
2023.04.06 -
4장 : 클래스와 인터페이스
아이템 15. 클래스와 멤버의 접근 권한을 최소화하라 - 클래스 내부 데이터 및 구현 정보를 외부 컴포넌트로부터 잘 숨겨야 : 캡슐화 - 모든 클래스이 맴버와 접근성을 가능한 좀혀야 - public일 필요가 없는 클래스의 접근 수준을 최대한 낮춰야 - 리스코프 치환 원칙 : 상위 클래스의 인스턴스는 하위 클래스의 인스턴스로 대체해 사용할 수 있어야 - 즉, 상위 클래스의 메서드를 정의할 때는 그 접근 수준을 상위 클래스에서보다 좁게 설정할 수 없다 - public 클래스의 인스턴스 필드는 되도록 public이 아니어야 - public을 가변 필드로 갖는 클래스는 일반적으로 스레드에 안전하지 않음 - 정적 필드도 마찬가지이나, 상수라면 public static final 필드로 공개해도 좋음 - 길이가 0..
2023.04.06