May 2025
Beginner to intermediate
424 pages
7h 7m
Korean
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
19장에서는 Kotlin의 오류 처리 전략과 Java의 예외에서 보다 기능적인 기법으로 리팩터링하는 방법을 살펴보았습니다. 사실 대부분의 코드는 오류가 발생하지 않기를 바라며 오류를 무시합니다. 더 잘할 수 있을까요?
마케팅에 새로 온 누군가가 20장에서마지막으로 본 스프레드시트 , 즉고가치 고객 점수를 생성하는 스프레드시트를 수정하기 시작했습니다. 자세히는 모르겠지만 구문 분석을 깨는 파일을 계속 내보내고 스택 추적이 무엇인지 설명해 달라고 합니다. 양쪽 모두 약간 당황스러워져서 케이크가 마르기 시작했습니다. 더 이상 동기가 될 만한 것이 없을까요?
네, 그럴 수도 있습니다. 마케팅팀이 파일을 서버에 저장하면 자동으로 요약본을 작성할 수 있도록 무인 작업을 작성해 달라는 요청도 받았습니다. 이러한 스택 추적을 해석할 사람이 없으면 오류를 제대로 보고할 수 있는 방법을 찾아야 할 것 같습니다.
여기 코드가 그대로 남아 있습니다:
funSequence<String>.toHighValueCustomerReport():Sequence<String>{valvaluableCustomers=this.withoutHeader().map(String::toCustomerData).filter{it.score>=10}.sortedBy(CustomerData::score).toList()returnsequenceOf("ID\tName\tSpend")+valuableCustomers.map(CustomerData::outputLine)+valuableCustomers.summarised()}privatefunList<CustomerData>.summarised():String=sumByDouble{it.spend}.let{total->"\tTOTAL\t${total.toMoneyString()}"}privatefunSequence<String>.withoutHeader()=drop(1)internalfunString.toCustomerData():CustomerData=split("\t").let{parts->CustomerData(id=parts[0],givenName=parts[1],familyName=parts[2],score=parts[3].toInt(),spend=if(parts.size==4)0.0elseparts[4].toDouble())}privatevalCustomerData.outputLine:Stringget()="$id\t$marketingName\t${spend.toMoneyString()}"privatefunDouble.toMoneyString()=this.formattedAs("%#.2f" ...