gyuwon
207
2019-07-22 23:30:46 작성 2019-07-23 00:02:03 수정됨
3
2376

TDD가 설계에 영향받지 않는다고?


뭐 예전엔 그렇게 얘기되던 때도 있었습니다. TDD를 통해 디자인을 한다고 Test-Driven Design이란 말도 돌았어요. 그런데 2016년에 엉클밥이 뭐라고 했는지 보죠.

Something that is hard to test is badly designed.

https://blog.cleancoder.com/uncle-bob/2016/03/19/GivingUpOnTDD.html

몇 년 전 켄트 벡도 DHH와의 공개 토론에서 유사한 얘기를 했습니다. 마틴 파울러는 옆에서 거들었던 것으로 기억합니다.

사실 영향력 있는 누군가의 말보다 중요한 건 현장에서 실제로 벌어지는 일들입니다. 저는 수년간 응집과 결합을 관리하지 못한 설계로 인해 TDD에 실패하는 사례를 많이 봐왔습니다. 간단히 정리하면,

인터페이스 설계는 TDD에 크게 영향을 줍니다. 이게 얼마나 당연한지 위 글에서 엉클밥이 설명합니다. TDD는 인터페이스 설계가 나쁘다는 신호는 주지만 좋은 설계로 안내하지는 않습니다.

TDD is not a good design methodology.

https://blog.ploeh.dk/2010/12/22/TheTDDApostate/

구현 설계는 TDD에 영향을 주지 않습니다. 반대로 TDD를 통해 크게 개선할 수 있습니다.


0
0
  • 댓글 3

  • 비트멍뭉이
    28
    2019-07-23 11:37:03 작성 2019-07-25 22:12:31 수정됨

    어제 제가 쓴 글에선 TDD의 디자인적 측면을 이야기하면서 필충조건이 아니다라고 했는데요. 필충조건이 아니다라고 한 것은 TDD가 설계를 개선할 수 없다거나 TDD가 도움이 되지 않는다는 뜻이 아닙니다. 여기선 제가 단어 선택을 잘못한 거 같네요. 그리고, 저도 본문 내용에 동의합니다.

    TDD도 툴박스에 들어있는 여러 도구 중 하나입니다. 유용한 도구이고 필요하면 선택해서 꺼내쓰지만, 같은 작업을 다른 도구를 선택하여 할 수도 있습니다. 모든 사람이 반드시 써야 하는 도구는 아닙니다.

    @gyuwon님 주장이 그렇다는 것은 아닙니다만, 많은 고수들의 관련 주장들이 TDD는 반드시 해야하는 것이다라는 뉘앙스를 본의 아니게 준 면도 있다고 생각됩니다. 저는 그렇게 형성된 인식이 잘못된 것임을 말하고 싶었습니다.

    2
  • 믿음
    4k
    2019-07-25 17:21:02

    비트멍뭉이 님// 안녕하세요.
    운영자 믿음입니다.

    본의아니게 불편을 드려서 죄송합니다.
    게시물 이동 관련해서 메일 드렸습니다.

    그럼, 좋은 하루 되세요~

    1
  • 비트멍뭉이
    28
    2019-07-25 22:13:34

    믿음님, 답변 주셔서 감사합니다.

    먼저 위 글의 제 댓글에서 관련 내용은 지웠습니다.

    나머지는 메일로 회신드리겠습니다.


    1
  • 로그인을 하시면 댓글을 등록할 수 있습니다.