ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 내가 생각하는 TTD란
    코드 성장 이야기/박재성 - TDD, Clean Code with java- 10기 2021. 1. 16. 16:11
    반응형

    TDD(Test Driven Development)란?

    • 테스트-주도 개발의 기본 흐름은 실패하는 테스트를 작성하고, 테스트를 통과하는 가장 간단한 코드를 작성한 후, 리팩터링을 통해 중복을 제거하는 것이다.
    • 테스트-주도 개발은 객체가 이미 존재한다고 가정하고 객체에게 어떤 메시지를 전송할 것인지에 관해 먼저 생각하라고 충고한다. 그러나 이 같은 종류의 충고는 역할, 책임, 협력의 관점에서 객체를 바라보지 않을 경우 무의미하다.
    • 테스트-주도 개발은 테스트를 작성하는 것이 아니라 책임을 수행할 객체 또는 클라이언트가 기대하는 객체의 역할이 메시지를 수신할 때 어떤 결과를 반환하고 그 과정에서 어떤 객체와 협력할 것인지에 대한 기대를 코드의 형태로 작성하는 것이다.
    • 테스트를 작성하기 위해 객체의 메서드를 호출하고 반환값을 검증하는 것은 순간적으로 객체가 수행해야 하는 책임에 관해 생각한 것이다. 테스트에 필요한 간접 입력 값을 제공하기 위해 스텁(stub)을 추가하거나 간접 출력 값을 검증하기 위해 목 객체(mock object)를 사용하는 것은 객체와 협력해야 하는 협력자에 관해 고민한 결과를 코드로 표현한 것이다.

     

    위와같이 이론만 공부 하였을 때 TDD는 코드를 잘개잘개 쪼개 테스트 코드를 작성함으로써, 코드들이 합쳐졌을 때 오류를 줄이는 방법이라고 생각을 하였다.

     

    하지만 박재성의 TDD 수업과 지인들과 이야기, 마지막으로 책을 참고하면서 TDD가 생겨난 이유에 대해서 생각을 하게 되었다. 

     

    현재의 나는 객체지향적으로 코드를 작성하게 된다면 자연스럽게 TDD가 따라 온다고 생각을 한다. 그 이유는 객체지향적으로 코드를 작성을 하게 되면 해당 객체에 대해서만 테스트코드를 작성하면 되니까..

     

    그렇기 때문에 코드를 작성할 때 최대한 객체지향적으로 코드를 작성하기 위해서 노력하고 있다.

     

    내가 나름 만족스럽게 객체지향적으로 작성한 코드는 아래와 같다. 

     

     

    아래와 같이 clone한다름 step4의 코드를 받으면 된다..

    git clone https://github.com/rlawls1991/java-lotto

     

     

     

     

     

     

    반응형
Designed by Tistory.