물론 이 함수를 구현하는 시점이 되면 실제 전자 우편을 보내기 위해서는 온갖 종류의 정보가
더 필요하다는 사실을 발견하게 된다. 전자 우편 자체에 대한 정보가 아니라, 어떻게 전자 우편
을 보낼지 설정하기 위한 여러 가지 정보가 필요하다. 송신 서버의 호스트 이름과 보안 크리덴
셜과 같은 요소들, 즉 이과가 아닌 여러분의 친구는 모르지만 그들의 컴퓨터를 설정할 때 여러
분은 알아야만 하는 정보가 필요하다.
sendEmail
에 세 가지 파라미터를 추가해서 이 모든 설
정 정보를 처리한다.
fun sendEmail(
email: Email,
serverAddress: InetAddress,
username: String,
password: String
) {
...
}
클라이언트 입장에서 보면 조금 더 불편해졌다. 전자 우편을 보내는 모든 곳에서 이 설정을 알
아야만 한다. 그래서 코드 기반의 맨 위부터 맨 밑바닥까지 이 정보를 여기저기에 넘겨야 한다.
전역 변수에 이런 자세한 사항을 감추면 이런 문제를 해결할 수 있을 것 같지만, 나중에 단위
테스트 스위트를 실행할 때마다 전자 우편을
50
개씩 보낸다는 사실을 발견하게 될 수도 있다!
이런 사소한 세부 사항을 감추는 더 좋은 방법이 있음에 틀림없다.
16.1
객체 지향 캡슐화
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.