불필요한 인터페이스 피하기
객체 지향 언어, 특히 정적 타입 언어에서는 객체가 구체적인 클래스 구현에 의존하지 않고 상호작용할 수 있도록 인터페이스를 정의하는 것이 일반적이다. 인터페이스는 클래스 간의 상호작용을 관리하는 일종의 계약 역할을 한다. 클래스가 다른 클래스를 직접 아는 것보다 인터페이스를 통하는 쪽을 더 선호하지만, 여전히 의존관계 요소가 남게 된다.
함수형 프로그래밍에서는 인터페이스를 선언하지 않고, 클래스가 필요한 함수의 시그니처에만 의존하게 하는 것이 더 바람직하다. 이렇게 하면 동일한 시그니처를 가진 함수는 클래스 메서드이든 람다이든 상관없이 작동할 수 있으며, 인터페이스를 구현할 필요가 없다.
두 객체가 여러 호출로 구성된 프로토콜에 따라 협력해야 하는 경우에는 여전히 인터페이스를 사용할 것이다. 이 경우 인터페이스는 프로토콜 자체를 추상화하는 데 도움이 된다.