본문 바로가기
2부 코드설계 > 5장 객체 생성 2부 코드설계 > 5장 객체 생성 > 생성자 대신 팩토리 함수를 사용하라. 2부 코드설계 > 5장 객체 생성 > 기본 생성자에 이름 있는 옵션 아규먼트를 사용하라. 2부 코드설계 > 5장 객체 생성 > 복잡한 객체를 생성하기 위한 DSL을 정의하라. 오늘의 TIL 3줄 요약 팩토리 함수에 대하여 named argument에 대하여 DSL에 대하여 1. 책에서 기억하고 싶은 내용 코틀린으로 더 좋은 코드를 작성하기 위한 내용. 팩토리 함수 클라이언트가 클래스의 인스턴스를 만들게 하는 가장 일반적인 방법은 기본 생성자(primary constructor)를 사용하는 것이다. 하지만 생성자가 객체를 만들 수 있는 유일한 방법은 아니며, 디자인 패턴으로 다양한 생성 패턴(creational pattern)들이 .. 2022. 9. 27.
2부 코드설계 > 4장 추상화 설계 2부 코드설계 > 4장 추상화 설계 > 함수 내부의 추상화 레벨을 통일하라. 2부 코드설계 > 4장 추상화 설계 > 변화로부터 코드를 보호하려면 추상화를 사용하라. 2부 코드설계 > 4장 추상화 설계 > API 안정성을 확인하라. 2부 코드설계 > 4장 추상화 설계 > 외부 API를 랩(wrap)해서 사용하라. 2부 코드설계 > 4장 추상화 설계 > 요소의 가시성을 최소화하라. 2부 코드설계 > 4장 추상화 설계 > 문서로 규약을 정의하라. 2부 코드설계 > 4장 추상화 설계 > 추상화 규약을 지켜라. 1. 책에서 기억하고 싶은 내용 추상화 : 컴퓨터 과학에서 추상화(abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 조금 간단하게 표현하.. 2022. 9. 27.
2부 코드설계 > 6장 클래스 설계 > equals, hashCode, compareTo / 확장함수 2부 코드설계 > 6장 클래스 설계 > equals의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > hashCode의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > compareTo의 규약을 지켜라. 2부 코드설계 > 6장 클래스 설계 > API의 필수적이지 않는 부분을 확장 함수로 추출하라. 2부 코드설계 > 6장 클래스 설계 > 멤버 확장 함수의 사용을 피하라. 오늘의 TIL 3줄 요약 equals, hashCode, compareTo 메서드의 기본 사용법 확장 함수를 사용하는 방법과 활용하는 방법 1. 책에서 기억하고 싶은 내용 equals 구조적 동등성 (structural equality) : ==, != 으로 확인하는 동등성. 레퍼런스적 동등성 (referential equa.. 2022. 9. 27.
2부 코드설계 > 6장 클래스 설계 > data, sealed, abstract 한정자 / 함수타입 / 태그클래스 2부 코드설계 > 6장 클래스 설계 > 데이터 집합 표현에 data한정자를 사용하라 2부 코드설계 > 6장 클래스 설계 > 연산 또는 액션을 전달할 때는 인터페이스 대신 함수타입을 사용하라 2부 코드설계 > 6장 클래스 설계 > 태그 클래스 보다는 클래스 계층을 사용하라 오늘의 TIL 3줄 요약 data 한정자, 데이터 클래스의 장점 함수타입으로 얻는 코드의 자유 태그 클래스 vs. 클래스 계층 (sealed, abstract한정자) 1. 책에서 기억하고 싶은 내용 data 한정자, 데이터들을 한꺼번에 전달해야 할 때 사용하는 클래스에 붙어있는 것을 확인할 수 있다. 이 한정자를 붙이면 아래의 함수들이 자동으로 생성된다. - toString : 로그 출력 및 디버그 시 활용 - equals, hashCo.. 2022. 9. 2.
2부 코드설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 2부 코드 설계 > 6장 클래스 설계 > 상속보다는 컴포지션을 사용하라 오늘의 TIL 3줄 요약 명확한 is-a 관계에서는 상속 (계층구조의 표현, 뷰를 출력) 컴포지션을 통한 인터페이스 분리원칙, 리스코프 치환원칙 개선 위임패턴과 포워딩 메서드 : 캡슐화가 깨지지 않도록 관리 1. 책에서 기억하고 싶은 내용 상속에 대한 몇 가지 단점 - 상속은 하나의 클래스만을 대상으로 할 수 있다. 상속을 사용하다 보면 많은 함수를 갖는 거대한 클래스를 가지게 되고 이는 복잡한 계층구조를 만들어 낸다. - 상속은 클래스의 모든 것을 가져온다. 따라서 불필요한 함수를 가지는 클래스가 만들어질 수 있다. (인터페이스 분리 원칙 위반) - 상속은 이해하기 어렵고, 메서드의 작동방식을 이해하기 위하여 슈퍼클래스를 여러 번 .. 2022. 9. 1.
2부 코드설계 > 3장 재사용성 2부 코드설계 > 3장 재사용성 1. 책에서 기억하고 싶은 내용 knowledge를 반복하여 사용하지말라. - 모든 것은 변화하고, 우리는 이에 대비해야 합니다. 변화할 때 가장 큰 적은 knowledge가 반복되어 있는 부분입니다. - knowledge의 반복은 프로젝트의 확장성(scalable)을 막고, 쉽게 깨지게(fragile)하게 만듭니다. 다행히도 개벌자는 knowledge 반복을 줄일 수 있는 도구와 기능을 사옹할 수 있습니다. - 여러종류의 추상화를 표현할 수 있는 솔루션. (변화로부터 코드 보호하려면 추상화를 사용하라) - 단일 책임 원칙이란 '클래스를 변경하는 이유는 단 한 가지여야 한다'라는 의미이다 - 서로 다른 곳에서 사용하는 knowledge는 독립적으로 변경할 가능성이 많습나다.. 2022. 7. 27.
728x90
반응형