Book
-
[🏝 이펙티브 코틀린] 4 추상화Book/Effective Kotlin 2023. 7. 4. 16:09
🏐 item 26 함수 내부의 추상화 레벨을 통일하라 추상화 레벨 통일 원칙(Single Level Of Abstraction, SLA) 이란? 컴퓨터 과학이 높은 레벨과 낮은 레벨을 확실하게 구분하고 있는 것처럼, 함수도 높은 레벨과 낮은 레벨을 구분해서 사용해야한다는 원칙 높은 레벨의 모듈 - 비즈니스 로직 낮은 레벨의 모듈 - 입력과 출력을 나타내는 모듈(view, http 요청 처리 등) 계층이 잘 분리된 프로젝트 = 좋은 프로젝트 🏐 item 27 변화로부터 코드를 보호하려면 추상화를 사용하라 상수 추출 함수 (동작 래핑) 클래스 (함수 래핑) 인터페이스 특수한 객체 (보편적인 객체 래핑) 어떻게 균형을 맞출까? 추상화의 균형을 찾는 것은 거의 감각에 의존해야하는 예술에 가깝다. 그래도 사용할 ..
-
[🏝 이펙티브 코틀린] 3 재사용성Book/Effective Kotlin 2023. 6. 12. 00:50
3장 재사용성 ⚾️ item 19 knowledge를 반복해서 사용하지 말라 knowledege = 의도적인 정보 = 로직, 공통 알고리즘 공통 knowledge가 있다면 이를 추출해서 변화에 대비해야 한다. 비즈니스 규칙이 다른 곳에서 왔다면, 독립적으로 변경될 가능성이 높기 때문에 추출을 하면 안된다. 단일 책임 원칙 : 클래스를 변경하는 이유는 단 한가지여야 한다. ⚾️ item 20 일반적인 알고리즘을 반복해서 구현하지 말라 대부분 stdlib 에 정의되어 있을 가능성이 높다. stdlib 에 없는 일반적인 알고리즘 또는 특정 알고리즘을 반복해서 사용해야하는 경우는 프로젝트 내부에 직접 정의해라(확장 함수로 정의하는 것이 좋다) ⚾️ item 21 일반적인 프로퍼티 패턴은 프로퍼티 위임으로 만들어..
-
[🏝 이펙티브 코틀린] 2 가독성Book/Effective Kotlin 2023. 6. 6. 00:09
🏀 item 11 가독성을 목표로 설계하라 개발자가 코드를 작성하는데는 1분 걸리지만, 이를 읽는 데는 10분이 걸린다. 숙련된 개발자만을 위한 코드는 좋은 코드가 아니다. 🏀 item 12 연산자 오버로드 할 때는 의미에 맞게 사용하라 연산자 오버로드 할 때는 의미에 맞게 사용해야 한다. 꼭 연산자 같은 형태로 사용하고 싶다면 infix 확장 함두 또는 톱레벨 함수 활용해라. infix 란? infix fun Int.add(x: Int): Int { return this + x } fun main() { println(3.add(5))// 8 println(3 add 5)// 8 } 3.add(5)와 같이 호출 할 수도 있고, infix를 붙어 있는 것만으로 3 add 5와 같이 중간 기법으로 사용하는..
-
[🏝 이펙티브 코틀린] 1 안정성Book/Effective Kotlin 2023. 6. 6. 00:04
⚽️ item 1 가변성을 제한하라 var 보다는 val 사용 하기 mutable 보다는 immutable 사용 (property, 객체, class 등) 데이터 클래스를 변경한다면 immutable 로 만들고 copy 하자 mutable 객체를 외부에 노출하지 말자 1. 읽기 전용 속성 val val 을 var로 오버라이드 할 수 있다. 읽기 전용 ≠ 가변성 val은 읽기 전용 속성이지만, 변경할 수 없음을 의미하는 것은 아니다. mutable 객체를 담고 있다면, 내부적으로 변할 수 있음 2. 가변 컬렉션과 읽기 전용 컬렉션 구분하기 읽고 쓸 수 있는 컬렉션 ≠ 읽기 전용 컬렉션 읽기 전용 컬렉션 ≠ 가변성 다운캐스팅 X 읽기 전용 컬렉션을 mutable 컬렉션으로 다운캐스팅 하지말아라 읽기 전용 >..
-
[Design Pattern] Observer Pattern/옵저버 패턴Book/헤드퍼스트 디자인패턴 2023. 3. 20. 16:56
[헤드퍼스트 디자인 패턴] 책을 읽으며 정리한 글입니다 옵저버 패턴 ( Observer Pattern ) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의한다. 신문사 + 구독자 = 옵저버 패턴! 옵저버 패턴은 신문사와 구독자로 이루어지는 신문 구독 서비스와 비슷하다. 신문사를 주제(subject), 구독자를 옵저버(observer)라고 부른다. 옵저버 패턴은 여러가지 방법으로 구현할 수 있지만, 보통 주제 인터페이스와 옵저버 인터페이스가 들어있는 클래스 디자인으로 구현한다. ConcreteSubject : Subject Interface 를 구현해야한다. 주제 클래스에는 등록하는 registerObser..