Skip to content

Min-Ground/java-to-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-to-kotlin

자바에서 코틀린으로: 코틀린으로 리팩터링하기

Chapter 3. 자바 클래스에서 코틀린 클래스로

  • data 변경자를 사용하면 컴파일러가 사용자가 정의하지 않은 equals, hashcode, toString 메서드를 자동으로 대신 생성한다.
  • 데이터 클래스에 있는 copy 메서드는 public이기 때문에 불변 객체 생성을 copy 메소드로 우회할 수 있다. (불변 조건이 필요하면 데이터 클래스가 적합하지 않다.)

Chapter 4. 옵셔널에서 널이 될 수 있는 타입으로

  • [Java] Optional.orElseThrow() (NoSuchElementException) == [Kotlin] !! (NullPointerException)
    • 예외를 발생하지 않고 안전한 호출을 하기 위해선 ?. 을 사용한다.
  • elvis(?:) : 좌변이 null이 아니면 좌변 값 반환, 그렇지 않음 우변 값을 반환한다.
  • let(?.let) : ?. 수식 객체가 null이면 null, 그렇지 않으면 let 블록으로 전달한다.
  • takeIf : 술어가 true면 수신객체 반환, 그렇지 않음 null을 반환한다.
  • 코틀린 사용 경험이 부족하면, takeIf보다는 when을 사용해서 명시성 측면을 중시하는 것이 괜찮을지도.

Chapter 5. 빈에서 값으로

  • 책에서의 은 불변 데이터 조각, 값 타입은 값의 동작을 의미한다.
    • 값 : 7, Integer, "banana", URI (불변)
    • 값 X : java.util.Date(setYear()와 같은 수정자 존재)

Chapter 6. 자바에서 코틀린 컬렉션으로

  • 공유된 컬렉션을 변경하지 말자. (파라미터, 공유 변수 등)

  • 코틀린 컬렉션은 불변(immutable)이 아닌 읽기 전용(read-only)이다.

  • 확장 함수와 리시버를 이용해서 코드의 가독성을 더 높일 수 있다.

    fun sufferScoreFor(route: List<Journey>): Int {
        return sufferScore(
            route.longestJourneys(3),
            Routes.getDepartsFrom(route)
        )
    }

    fun List<Journey>.longestJourneys(limit: Int): List<Journey> = sortedByDescending { it.duration }.take(limit)

Chapter 7. 동작에서 계산으로

  • 계산 : 같은 인자로 호출하면 항상 같은 결과를 돌려주는 함수
  • 동작 : 파라미터의 상태를 변경하거나 전역 변수나 데이터베이스 등을 변경하는 함수

About

자바에서 코틀린으로: 코틀린으로 리팩터링하기

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published