# TDD강의, 테스트 주도 개발 기초 Chapter #3 ###### tags: `냥하`, `강의` ## 테스트 주도 개발의 깊은 곳 ### 1. 인터페이스와 구현 - 추상화: 목적에 따라 대상이 가지고 있는 것 중 일부만을 투영하는 것. - 협력과 계약 - 인터페이스: 어떻게 협업할지에 대한 계약, 클라이언트 코드에게 반드시 필요한 정보, '무엇' - 정보 숨김 - 효과적인 모듈화 - 정보를 숨김으로서 이해를 돕는다 :: 대부분의 시스템정보는 대두분의 프로그래머에게 숨겨지는 것이 도움된다. <br/><br/> ### 2. 환경변화와 적응력 - Alan Kay: 지연된 바인딩, 다형성(일반성) - **개방-폐쇄 원칙(OCP)**: 소프트웨어 엔터디(클래스, 모듈, 함수 등)는 확장에 열리고 수정에 닫혀야 한다. - 확장이 가능하다는 것은 모듈이 열려있음을 의미 - 다른모듈에 사용될때는 닫힘원칙 - 다형적 개방-폐쇄 원칙 - <img width="623" alt="Screen Shot 2022-04-17 at 1 10 52 PM" src="https://user-images.githubusercontent.com/48500209/163700045-9ab018b3-5293-4785-96fe-f3387225c711.png"> - 추상화에 의존 <br/><br/> ### 3. 입력과 출력 - 입력 - 논리 - 출력 - 직접 입력, 직접 출력 - 간접 입력, 간접 출력