본문 바로가기
[Effective Kotlin] Item 33 : Consider factory functions instead of constructors 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # Factory function 의 장점은 아래와 같다. Constructor 와 다르게 이름을 가질 수 있다. Constructor 와 다르게 subtype 을 return 할 수 있다. Constructor 와 다르게 매번 새로운 object 를 만들지 않아도 된다. 기존에 만든 것을 줄 수도 있고, null 을 return 할 수도 있다. 아직 존재하지 않는 object 를 제공할 수 있다. 이는 annotation processing 기반으로 객체가 생성되는 경우를 이야기.. 2022. 5. 5.
[Effective Kotlin] Item 32 : Respect abstraction contracts 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # reflection 으로 private field 와 function 등에 접근할 수는 있지만, 이것을 해도 된다는 건 아니다. 그들은 constract 의 일부가 아니다. 그래서 언제든 그 구현 등이 바뀔 수 있다. 그래서 이는 매우 위험하다. Contracts are inherited # 예를 들면 Any 는 hashCode, equals 를 구현하길 기대한다. Summary # Contract 를 존중하자. 만약 이를 깨야만 한다면 문서화 해놓자. 끝 2022. 5. 4.
[Effective Kotlin] Item 31 : Define contract with documentation 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 이름이 말하는 바가 불투명하거나 문서화가 제대로 되어 있지 않다면, 개발자는 원래 의도가 아닌 현재 구현을 바탕으로 판단한다. Contract # 규약이 잘 정의되어 있다면, 제작자 측면에서 이 녀석이 어떻게 사용될지 걱정할 필요가 없어지고, 사용자 입장에서는 어떻게 구현되었는지를 신경쓸 필요가 없어진다. 만약 규약이 잘 정의되어 있지 않다면, 유저는 무엇을 해도 되는지 하면 안 되는지 잘 몰라서 구현을 보고 이를 따르게 된다. 제작자는 유저가 무엇을 원하는지 모르기 때문에 추.. 2022. 5. 3.
[Effective Kotlin] Item 30 : Minimize elements visibility 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 적은 interface 는 학습 난이도를 낮추고, 유지보수도 쉬워진다. 새로운 것을 노출하는 것은 쉽지만, 기존에 노출한 것을 감추기는 어렵다. 감추기 위해서는 보통 대체제를 제시해 주어야 한다. # property 를 노출하는 것은 class 자체의 안정성을 낮추는 효과가 난다. 덜 공개할수록 클래스의 변화를 추적하기 쉽다. Using visibility modifiers # 지금 당장 쓰지 않는 property 라도 그 속성을 나타내는 것이면 public 으로 두어도 된다... 2022. 5. 2.
[Effective Kotlin] Item 29 : Consider wrapping external API 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 안정성이 낮은 외부 라이브러리를 사용할 때 wrap 하는 이유는 아래와 같다. 사용자 입장에서 API 변화에 영향도가 적어진다. 우리 프로젝트 스타일과 로직에 맞도록 API 의 변화가 가능하다. 다른 lib 으로 교체도 유연하진다. 필요에 따라 동작 변경도 가능하다. 이에 따른 단점은 아래와 같다. wrapper 가 사용하는 모든 기능에 대한 정의를 또 해야 한다. Internal API 에 대한 추가 학습이 필요하다. Internal API 에 대한 학습 채널이 없다. # 위.. 2022. 5. 1.
[Effective Kotlin] Item 28 : Specify API stability 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # 프로그래머들은 안정적이고 공식적인 API 를 쓰긴 원한다. 그 이유는.. API 변화는 개발자에게 코드 업데이트를 요구한다. API 변화/추가는 새로운 API 를 학습과 지식의 업데이트를 요구한다. # API 중 안정적이지 않은 부분을 문서에 잘 명시하는 것이 중요하다. # Semantic Versioning (SemVer) 는 Major.Minor.Patch 로 버전을 구분하는 버저닝을 이야기한다. Major 는 하위 호환되지 않는 API 변화가 있을 때, Minor 는 하위.. 2022. 4. 30.
[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.
반응형