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으로

16장. 함수 인터페이스

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

Java에서는 인터페이스를 사용하여 일부 기능을 정의하는 코드와 이를 필요로 하는 코드 간의 계약을 지정합니다. 이러한 인터페이스는 두 당사자를 서로 연결하여 소프트웨어를 유지 관리하기 어렵게 만들 수 있습니다. 함수형은 이 문제를 해결하는 데 어떻게 도움이 될까요?

가능하다면 작성 중인 코드에서 이메일을 보내야 한다고 상상해 보세요. 지금은 메일을 받거나 보낸 메시지를 나열하는 것이 아니라 그냥 실행하고 잊어버리세요.

이메일을 설명하는 코드는 매우 간단합니다:

data class Email(
    val to: EmailAddress,
    val from: EmailAddress,
    val subject: String,
    val body: String
)

Email 이 주어지면 클라이언트 코드는 이를 전송하기 위해 가능한 가장 간단한 함수를 호출하려고 합니다:

fun send(email: Email) {
    ...
}

물론 이 기능을 구현할 때 실제로 이메일을 보내려면 온갖 종류의 다른 정보가 필요하다는 것을 알게 되었습니다. 이메일 자체에 대한 정보가 아니라 이메일을 보내는 방법에 대한 구성이 필요합니다. 보내는 서버의 호스트 이름과 보안 자격 증명 등 기술 전문가가 아닌 친척이 모르는 모든 것을 새 컴퓨터에 설정해야 합니다. sendEmail 에 이 모든 설정을 대신할 수 있도록 세 개의 추가 매개 변수를 추가하겠습니다:

fun sendEmail(
    email: Email,
    serverAddress: InetAddress,
    username: String,
    password: String
) {
    ...
}

클라이언트로서는 상황이 훨씬 덜 편리해졌습니다. 이메일을 보내려는 모든 곳에서 이 설정을 알아야 하고, 코드베이스의 위에서 아래로 전달해야 합니다. 전역 변수에 세부 정보를 숨겨서 이 문제를 해결하는 것은 단위 테스트 스위트를 실행할 때마다 50개의 이메일을 보내는 것을 발견하기 전까지는 잘 작동합니다! 이런 사소한 세부 사항을 숨기는 더 좋은 방법이 있을 것입니다.

객체 지향 캡슐화

객체 지향 언어( )에는 이 문제에 대한 기성 솔루션이 있습니다. 객체는 데이터를 캡슐화할 수 있습니다:

class EmailSender(
    private val serverAddress: InetAddress,
    private val username: String,
    private val password: String
) {
    fun send(email: Email) {
        sendEmail(
            email,
            serverAddress,
            username,
            password
        )
    }
}

이제 이메일을 보내려면 정적 함수가 아닌 EmailSender 에 액세스해야 합니다. 일단 EmailSender 이 있으면 함수를 호출하는 대신 메서드를 호출하고, 메서드가 이미 알고 있기 때문에 모든 사소한 세부 사항을 알려줄 필요가 없습니다(클래스의 ...

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