본문 바로가기
[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.
[Effective Kotlin] Item 18 : Respect coding conventions 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # class Person(val id: Int = 0, val name: String = "", val surname: String = "") : Human(id, name){ //.. } val id: Int = 0 부분을 new line 으로 처리하자. 위의 방식은 class name 에 따라 들여쓰기가 다르게 작동한다. 그리고 첫줄을 비롯해 나머지 줄들도 오른쪽으로 길게 늘어지는 효과도 있다. 그리고 : Human(id, name) 도 내리자 # ktlint, Intelli.. 2022. 3. 15.
[Effective Kotlin] Item 17 : Consider naming arguments 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # named argument 는 variable naming 에 비해 더 신뢰도가 있다. 개발자가 잘못된 position 에 값을 assign 하거나, 함수의 argument position 이 변경된 경우 등에 유연하게 대처 가능하다. val text = (1..10).joinToString(separator = "|") val separator = "|" val text = (1..10).joinToString(separator) When should we use named .. 2022. 3. 14.
[Effective Kotlin] Item 16 : Properties should represent state, not behavior 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # kotlin 의 property 는 java 보다 많은 기능을 가지고 있다. # custom setter, getter 를 가질 수 있으며, 이곳에서는 field(backing field) 라는 identifier 로 현재값을 참조한다. # val 로 정의함으로써 read-only 를 만들 수도 있다. # property 는 override 도 가능하고, lazy 등으로 delegate 도 할 수 있다. # extension property 정의도 가능하다. # property.. 2022. 3. 13.
[Effective Kotlin] Item 15 : Consider referencing receivers explicitly 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # extension receiver 란 "this" 같은 녀석을 말한다. Many receivers # 명시적인 receiver 를 사용하는 것은 scope 내에서 1개 이상의 receiver 가 있는 경우 유용하다. class Node(val name:String){ fun makeChild(childName: String) = create("$name.$childName").apply{ print("Created ${name}") } fun create(name : Strin.. 2022. 3. 12.
[Effective Kotlin] Item 14 : Specify the variable type when it is not clear 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # val data = getSomeData() 위와 같이 compiler 에 의한 type inference 는 되지만, human 에 의해 type 을 바로 알기 어려운 경우 (가독성을 저해하는 경우) 명시적으로 타입을 붙여주는 것이 좋다. # 코드를 읽는 사람이 꼭 IDE 에서 보라는 법이 없기 때문에 IDE 가 제공하는 return type 보기 기능을 활용할 수 없을 수 있고, return type 확인을 위해 함수로 jump in 이 쉽지 않은 경우도 있다. # 모호한 .. 2022. 3. 11.
[Effective Kotlin] Item 13 : Avoid returning or operating on Unit? 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # Unit? return 이 사용될법한 곳은 아래와 같은 케이스 뿐이라 생각. if (isKeyCorrect(key) == false) return verifyKey(key) ?: return // Unit? return case 이런 경우 boolean 으로 대체될 수 있고 더 일반적인 사용방법이며, Unit? return 은 혼란을 가져올 수 있어 피하는 게 좋다. 끝 2022. 3. 10.
[Effective Kotlin] Item 12 : Operator meaning should be consistent with its function name 이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서 Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다. # Operator overloading 은 강력한 기능이다. 하지만 위험하기도 하다. operator 의 의미는 그대로 유지하여야 한다. Unclear cases # 의미가 대충 맞는 다른 구현을 할 때가 있다. 그러나 이 경우에도 infix top-level function 을 정의해서 해결하는 것이 좋고, stdlib 에서 제공하는것으로 쉽게 대체 가능한지를 확인하는 것도 좋다. When is it fine to break this rule? # DSL 을 만들 때가 oper.. 2022. 3. 9.
반응형