본문 바로가기

di3

Go - mocking - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/mocking - 개요 mocking에 대해 알아보고 mocking를 사용할 때 장점에 대해 알아본다. - Countdown 프로그램 3부터 하나씩 줄어드는 숫자를 출력하는 프로그램을 만들어보자. 단 각 숫자를 출력하기전에 1초를 멈추고 나서 출력한다. 0에 도달할 때는 0대신 Go!를 출력한다. package main func main() { Countdown() } 사실 프로그램이 맞나 싶을 정도로 보잘 것 없는 요구사항이지만 언제나 작은 단계의 성공적인 소프트웨어를 구축한 후, 이를 점차 반복적인 테스트 접근법을 통해 구축해야 한다. 이렇게 하려면 요구사항을 가능한 잘게 쪼갠 후 동.. 2022. 1. 2.
Go - dependency injection - 출처: https://quii.gitbook.io/learn-go-with-tests/go-fundamentals/dependency-injection - 개요 Go의 표준 라이브러리의 인터페이스인 Writer를 이용하여 Dependency injection(이하 'DI')에 대해 알아본다. DI를 이용하면 test에 얼마나 많은 도움이 되는지 이해한다. - Dependency injection 한국의 국룰 프레임워크인 Spring을 써본적이 있다면 DI 라는말을 들어본적이 있을것이다. 용어도 멋있기 때문에 오해가 있는데 DI에 관한 약간의 오해를 줄이고자 한다. 우선 DI를 하기 위해 반드시 프레임워크가 필요한것은 아니다. 또한 코드나 디자인을 복잡하게 하지 않는다. test를 용이하게 하고, 함수.. 2021. 12. 31.
프로그래밍 패러다임 - 객체지향 프로그래밍 - 이 글은 로버트 C.마틴의 Clean Architecture를 기반으로 작성되었습니다. (가능하면 책을 읽어보는것을 추천한다.) - 객체지향이란? 객체지향 (Object Oriented)은 프로그래머라면 당연히 들어봤을법한 너무도 유명한 개념이다. 객체지향이란 무엇인가? 어떤 사람들은 데이터와 함수의 조합이라고 정의한다. 하지만 이렇게 정의하기엔 너무 단순하고 객체지향 이전에도 데이터 구조를 함수와 조합해서 사용해왔다. 또는 실제 세계를 모델링하는 방법이라고 정의한다. 이 정의는 앞의 정의보다 더 심오하긴 하지만 너무나 모호하다. 보통 OO의 정의를 설명하기 위해 캡슐화, 상속, 다형성을 언급하기도 하는데 이는 하나씩 자세히 살펴볼 필요가 있다. - 캡슐화 OO정의에서 캡슐화를 언급하는 이유는 OO .. 2021. 2. 10.