[TDD] 코드 분해

so_doit·2022년 2월 23일
0

TIL

목록 보기
6/26

거의 모든 프로그래머는 시스템의 코드를 분해한다.
당연시되는 코드 분해의 목적과 방법에 대해 이 강의를 들으면서 한 번 더 생각을 했다.

문제의 크기

  1. 프로그래머가 한 번에 다룰 수 있는 문제의 크기는 한계를 가진다.

    • 다양한 문제를 한번에 다룰 순 없다.
    • 사람은 누구라도 하나의 일을 차례대로 진행하지, 여러개의 일을 동시에 못한다.
    • 문제가 너무 커도 마찬가지이다.
  2. 프로그래머는 더 큰 문제를 자주 마주한다.

    • 일하다보면 개발자는 예상치 못한 상황을 접하게 된다.
  3. 시스템의 크기는 점점 커진다.

    • 처음엔 작게 시작했지만 점점 시간이 지나면서 서비스가 고도화되고, 추가 기능이 붙으면서 시간에 따라 비대해진다.
  4. 큰 문제는 작은 문제로 분해할 수 있다.

    • 대체적으로 마주하는 문제들은 작은 요소로 쪼개질 수 있다.
    • 새로운 기능 구축이 필요하면 해당 요구사항을 분석해서 구현에 필요한 작은 기능을 하나씩 정리하여 구현한다.
  5. 작은 문제의 일부는 반복된다.

    • 발생한 문제는 이전에 발생한 반복된 문제일 수도 있다.
    • 히스토리를 파악해서 해결방법을 찾을 수 있다.

문제는 앞으로 계속 발생할 것이며, 어떤 것들은 이전부터 반복되는 문제일 수도 있다.
이런 경우 코드를 재사용하여 수정할 수 있다.

코드 재사용

  1. 반복되는 문제의 풀이는 재사용 가능하다.

    • 재사용하려는 코드의 아주 작은 코드를 수정해도 이게 따른 의도하지 않은 사이드 이팩트를 파악하기 힘들다.
    • 가능한 그대로 사용하는 것이 중요하다.
    • 이미 작성된 코드를 패키지로 만들어서 재사용하는 방식과 산출물을 라이브러리라고 부른다.
  2. 소프트웨어 개발 비용이 절감한다.

    • 코드 재사용은 새롭게 코드 작성으로 해결하는 것보다 비용절감 효과가 있고, 앞으로 강의에서 계속 엔지니어링에 맞대어 있다.

모듈화

분해

  • 큰 시스템은 더 작은 하위 시스템으로 분해 가능하다.
  • 교체가 가능하다.

조립

  • 작은 시스템은 더 큰 상위 시스템으로 조립 가능하다.
  • 모듈 재사용하는 것이다.
  • 라이브러리를 사용하는 것이다.

단위 테스트

  • 모듈을 테스트할 때 단위 테스트를 많이 사용한다.
  • 클라이언트에게 신뢰도를 줄 수 있는 좋은 수단이다.
profile
백엔드 개발자

0개의 댓글