본문 바로가기

Interface3

DDD - Inteface - 출처: 도메인 주도 설계 - 에릭 에반스 - Intention Revealing Interface (의도를 드러내는 인터페이스) Interface는 Client 개발자가 객체를 효과적으로 사용하기 위해 알아야할 정보를 추상화하고 있다. 그래서 Interface가 제대로 작성되어 있지 않으면 Client 개발자는 사용하려고 하는 개체에 대한 세부사항을 아주 세밀하게 알고 있어야 한다. Client 개발자의 머릿속이 이런 구현 세부사항들로 넘처나게 되면 해결해야 할 비즈니스 문제를 집중해서 해결할 수 없다. 객체의 캡슐화 가치가 떨어지게되는것이다. 클래스나 연산이름을 지을때에는 수행 방법이 아닌 결과와 목적만을 표현해야 한다. TDD 를 잠깐이라도 접해본적이 있다면 구현하지도 객체에 대해 Test cod.. 2022. 10. 1.
Effective Go - Interfaces and other types - 출처: https://go.dev/doc/effective_go#interfaces_and_types - Interfaces Go에서 interface는 객체의 행동을 지정하는 방법이다. 만약 A가 B를 할 수 있다면 A는 여기에 사용될 수 있다는것을 의미한다. Go에서 1개 혹은 2개의 메소드들로 구성된 interface 들을 어렵지 않게 볼 수 있는데, Write 메소드를 구현하는 io.Writer interface 처럼 이름은 대체적으로 해당 메소드들로 부터 파생된다. 하나의 형은 여러 개의 interface들을 구현할 수 있다. 예를 들어 아래 코드에서 Sequence는 Len(), Less(i, j int) bool, Swap(i, j int)를 포함하는 sort.Interface를 구현하는.. 2022. 5. 26.
Go - struct, method, interface 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/structs-methods-and-interfaces - 개요 Go에서 관련있는 데이터를 연관시켜 표현할 수 있는 struct에 대하여 알아본다. structd의 method와 interface를 통한 다형성을 알아본다. - struct example 사각형의 너비와 높이가 주어졌을 때 둘레를 구하는 코드를 작성해보자. func TestPerimeter(t *testing.T) { got := Perimeter(10.0, 10.0) want := 40.0 if got != want { t.Errorf("got %.2f want %.2f", got, want) } } Perimeter를 구현.. 2021. 12. 24.