본문 바로가기
[Effective Kotlin] Item 27 : Use abstraction to protect code against changes 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 물 위를 걷는 것과 소프트웨어 개발하는 것은 쉽다. 만약 둘 다 얼어있다면.. Constant Function Class # class 는 상태를 가질 수 있다는 점에서 function 보다 좋다. class 는 injection 이 가능하고, 따라서 test 도 유연해진다. Interface Next ID Abstractions give freedom # Constant 추출하기 Function 으로 추출하기 Class 로 추출하기 Interface 로 class 감추기 Un.. 2022. 4. 29.
[Effective Kotlin] Item 26 : Each function should be written in terms of a single level of abstraction 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # abstraction (추상화) 는 복잡성을 감추어 간단하게 만드는 것. 간단한 프로그래밍의 예는 interface. 이는 class 에 대한 추상화이며, 오직 일부만(일부 property 와 일부 method 만) 드러낸다. # abstraction 은 module 이나 library 로 분리하는 것만을 이야기하는 것이 아니다. 에를 들어 함수를 정의하면, 함수 시그니처 안에 그 구현을 감추는 abstraction 인 것이다! # 프로그래밍에서 abstraction 은 주로 .. 2022. 4. 28.
[Effective Kotlin] Item 25 : Reuse between different platforms by extracting common modules 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. Full-stack development # Front-end 는 JS 가 지배적이었고, Back-end 는 Java 가 인기가 좋았다. 그러나 Kotlin 의 등장으로 많은 것이 바뀌었다. Java 는 Kotlin 과 함께 적용 가능하므로, Java 에서 Kotlin 으로 많이 넘어갔고, Ktor 같은 backend framework 도 있다. Kotlin/JS lib 을 통해 Kotlin 이 JS 로 compile 도 가능해졌다. 그래서 React framework 와 Kotl.. 2022. 4. 27.
[Effective Kotlin] Item 24 : Consider variance for generic types 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # class Cup variance modifier (out, in) 마킹이 없으면 invariant 이다. 이 말은 Cup, Cup 는 서로 다른 2개의 타입으로 정의된다. Int 가 Any 을 상속했음에도 # variance modifier 를 사용해 관계를 지정해줄 수 있다. out 은 covariant 를 지정한다. A extends B 라면 Cup 가 Cup 의 subtype 이다. 즉 val anys: Cup = Cup() 가 가능하다. in 은 contravarian.. 2022. 3. 21.
[Effective Kotlin] Item 23 : Avoid shadowing type parameters 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # interface Tree class Birch: Tree class Spruce: Tree class Forest { fun addTree(tree:T){ // 가 없어져야.. // ... } } val forest = Forest() forest.addTree(Birch()) forest.addTree(Spruce()) 이런 식의 type parameter shadowing 은 잘 보이지 않는다. 만약 Spruce 와 같이 다른 subtype 을 받을 요량이라면 다른 이름의.. 2022. 3. 20.
[Effective Kotlin] Item 22 : Use generics when implementing common algorithms 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. Generic constraints # 2개 이상이 upper bound 를 set 할 때는 where 를 사용한다. fun pet(animal: T) where T: GoodTempered{ /.../ } fun pet(animal: T) where T: Animal, T: GoodTempered{ /.../ } Summary 끝 2022. 3. 19.
[Effective Kotlin] Item 21 : Use property delegation to extract common property patterns 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # lazy 와 Delegates.observable 이 유용하다. val value by lazy { createValue() } var key: String? by Delegates.observable(null) { _, old, new -> Log.e("key changed from $old to $new") } var items: List by Delegates.observable(listOf()) { _, _, _ -> notifyDataSetChanged() } # Vi.. 2022. 3. 18.
[Effective Kotlin] Item 20 : Do not repeat common algorithms 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 짧지만 반복적으로 사용되는 알고리즘을 추출해내면 다음과 같은 장점이 있다. 프로그래밍이 빨라진다. - single call 로 해결 추출해낸 것은 이름이 붙기에, 구현을 모두 읽는 대신 내용을 알 수 있다. 핵심기능 구현에 집중할 수 있다. 한번 최적화 되면 사용하는 모든곳에서 이득을 볼 수 있다. Learn the standard library # stdlib 만 잘 알아도 바퀴를 다시 만드는 일을 많이 피할 수 있다. Implementing your own utils # e.. 2022. 3. 17.
[Effective Kotlin] Item 19 : Do not repeat knowledge 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # project 에서 copy paste 를 하고 있다면 뭔가 잘못된 것이다. # DRY (Don't Repeat Yourself), WET, SSOT (Single Source of Truth) 등과 연결된다. Knowledge # 2가지 중요한 종류의 지식이 있다. Logic : 어떻게 동작해야 하고, 어떻게 보여야만 하는지. Common Algorithm : 기대한 동작을 하도록 구현된 알고리즘 비지니스 로직 변경 (기획 변경) 이 자주 일어나는데, Logic 은 그에 따라.. 2022. 3. 16.
반응형