더북(TheBook)
interface ZettaiHub {
    fun getList(user: User, listName: ListName): ToDoList?
}

허브 인터페이스를 구현할 때는 다음 두 가지를 반드시 염두에 두어야 한다.

허브 내부는 함수적으로 순수하게 유지되어야 하며, 부수 효과나 외부 상호작용이 없어야 한다.

허브의 기능을 완성하려면 필요한 외부 기능은 외부에서 제공돼야 한다.

icon_joe 조에게 묻는다 지금 허브 인터페이스를 만드는 것은 시기상조가 아닌가?

메서드가 하나뿐이고 구현도 하나뿐인 인터페이스를 만드는 것은 과도해 보일 수 있지만, 나중에 잘못 디자인된 애플리케이션을 수정하는 것보다 처음부터 깔끔한 디자인을 적용하는 것이 더 간단하고 빠르다.

여기서 핵심은 미래의 요구 사항을 미리 추측하지 않는다는 것이다. 이는 린 개발의 원칙에 어긋나기 때문이다. 우리가 하는 일은 처음부터 가장 단순한 방식으로 원칙(즉, 도메인과 인프라의 분리)을 정의하고 존중하는 것이다.

이제 ToDoList의 허브를 구현할 수 있다. 이 허브는 생성자에서 할 일 목록의 맵을 가져온다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.