Skip to Content
Java에서 Kotlin으로
book

Java에서 Kotlin으로

by Duncan McGregor, Nat Pryce
May 2025
Beginner to intermediate
424 pages
7h 7m
Korean
O'Reilly Media, Inc.
Book available
Content preview from Java에서 Kotlin으로

20장. 데이터 전달을 위한 I/O 수행

이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com

입력과 출력은 코드에서 문제가 됩니다. 파일이 사라지거나 네트워크 소켓에 장애가 발생하면 프로그램이 외부와 통신하는 데 오류가 발생할 수 있습니다. 입력과 출력도 동작이므로 코드를 추론하고 리팩터링하는 능력이 제한됩니다. 입력과 출력으로 인해 발생하는 문제의 범위를 제한하려면 어떻게 해야 할까요?

앞 장에서 어느 정도 기초를 다졌으니 이제부터는 속도를 높여 리팩토링으로 바로 들어가서 진행하면서 교훈을 얻겠습니다.

테스트 듣기

10장에서는 마케팅용 보고서를 생성하는 Java 코드를 살펴봤습니다. 코드를 떠날 때 HighValue​Custo⁠mersReport 에 확장 함수를 도입했습니다:

@Throws(IOException::class)
fun generate(reader: Reader, writer: Writer) {
    val valuableCustomers = reader
        .readLines()
        .toValuableCustomers()
        .sortedBy(CustomerData::score)
    writer.appendLine("ID\tName\tSpend")
    for (customerData in valuableCustomers) {
        writer.appendLine(customerData.outputLine)
    }
    writer.append(valuableCustomers.summarised())
}

private fun List<String>.toValuableCustomers() = withoutHeader()
    .map(String::toCustomerData)
    .filter { it.score >= 10 }

private fun List<String>.withoutHeader() = drop(1)

private fun List<CustomerData>.summarised(): String =
    sumByDouble { it.spend }.let { total ->
        "\tTOTAL\t${total.toMoneyString()}"
    }

다음은 Kotlin으로 전환한 후의 테스트입니다:

class HighValueCustomersReportTests {

    @Test
    fun test() {
        check(
            inputLines = listOf(
                "ID\tFirstName\tLastName\tScore\tSpend",
                "1\tFred\tFlintstone\t11\t1000.00",
                "4\tBetty\tRubble\t10\t2000.00",
                "2\tBarney\tRubble\t0\t20.00",
                "3\tWilma\tFlintstone\t9\t0.00"
            ),
            expectedLines = listOf(
                "ID\tName\tSpend" ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

코드 밖 커뮤니케이션

코드 밖 커뮤니케이션

재퀴 리드
실리콘밸리 리더십

실리콘밸리 리더십

김정혜, 마이클 롭

Publisher Resources

ISBN: 9798341656055Supplemental Content