[TDD] 환경 변화와 적응력

so_doit·2022년 3월 2일
0

TIL

목록 보기
13/26

이전 시간에 인터페이스의 역할과 정보 숨김이 모듈화에 미치는 영향에 대해 알아봤다. 오늘은 강의를 통해 코드가 수명이 다할 때까지 계속 끊임없이 겪게 되는 변화, 그 변화에 경제적으로 대응하는 코드를 설계하는 기법에 대해서 공부할 예정이다.

적응력

모듈화가 충실히 되어있으면 적응력이 높아진다.
분리해내기 쉽고, 새로운 코드를 확장하기 쉽고, 기존 코드의 일부를 변경하기도 싶다.

개체 지향 (Object-oriented)

코드를 설계하는 일종의 패턴이다.
Alan Kay가 말하길 OOP는 나에게 오직 메세지, 지역 보존, 상태 프로세스의 보호와 숨김 그리고 극도로 느린 지연된 바인딩이다.

개방-폐쇄 원칙 (Open-closed principle)

소프트웨어 엔터티(클래스, 모듈, 함수 등)는 확장에 열리고 수정에 닫혀야 한다.

Bertrand Meyer

  • 확장 가능한 경우 모듈은 열려 있다고 말한다.
    - 코드를 수정하지 않고 새로운 기능을 추가할 수 있어야 한다.
  • 다른 모듈에 의해 사용될 수 있을 때 모듈은 닫혀 있다고 말한다.
    - 다른 모듈에 사용될 때 원래의 모듈이 빌드된 상태에서 재고되야 한다.
  • 상속을 염두 한 정의이다.

다형적 개방-폐쇄 원칙

모듈이 이용하는 추상화 구현체가 뭐냐에 따라서 모듈의 역할이 바뀔 수 있다.
모듈 코드는 그대로인 상태에서 구현을 어떻게 제공하냐에 따라서 기능이 확장되거나 변경될 수 있다.

Testability와 적응력

  • Testability : 테스트하기 쉬움을 의미한다.
  • 단위 테스트 하려면 하위 시스템은 쉽게 분리할 수 있어야 한다.
  • 적응력 높은 코드는 분리하기 쉽다.

즉 적응력이 오를 수도 Testability도 같이 오른다.


profile
백엔드 개발자

0개의 댓글