01.나만의 MVC 프레임워크 만들기
ch01.강의소개
ch02.개발 환경 구성하기
ch03.객체지향 패러다임
테스트코드 실습
테스트 코드를 작성하는 이유?
- 문서화 역할
- 코드에 결함을 발견하기 위함
- 리팩토링 시 안정성 확보
- 테스트 하기 쉬운 코드를 작성하다 보면 더 낮은 결합도를 가진 설계를 얻을 수 있음
TDD
- Test Driven Development(테스트 주도 개발)
- 프로덕션 코드보다 테스트 코드를 먼저 작성하는 개발 방법
- TFD(Test First Development) + 리팩토링
- 기능 동작을 검증 (메소드 단위)
BDD
- Behavior Driven Development (행위 주도 개발)
- 시나리오 기반으로 테스트 코드를 작성하는 개발 방법
- 하나의 시나리오는 Given, When, Then 구조를 가짐
객체지향 개념 다지기
객체지향 4가지 특징
1.추상화(Abstraction)
2.다형성(Polymorphism)
3.캡슐화(Encapsulation)
4.상속(Inheritance)
객체지향의 5가지 설계 원칙(SOLID)
1.SRP: Single Responsibility Priciple (단일 책임 원칙)
2.OCP: Open/Closed Principle (개방 폐쇄 원칙)
3.LSP: Liskov's Substitution Principle (리스코프 치환 원칙)
4.ISP: Interface Segregation Principle (인터페이스 분리 원칙)
5.DIP: Dependency Inversion Principle (의존성 역전 원칙)
객체지향 패러다임
- 적절한 객체에게 적절한 책임을 할당하여 서로 메시지를 주고 받으며 협력하도록 하는 것
- 점점 증가하는 SW 복잡도를 낮추기 위해 객체지향 패러다임 대두
- 개인적으로 생각하는 두 가지 중요 포인트
- 클래스가 아닌 객체에 초점을 맞추는 것
- 객체들에게 얼마나 적절한 역할과 책임을 할당하는지
절차지향 프로그래밍 vs 객체지향 프로그래밍
- 책임이 한곳에 집중돼 있는 방식 (getter)
- 책임이 여러 객체로 적절히 분산돼 있는 방식
high cohesion, loose coupling
- 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
- 객체들 간의 관계를 고민
- 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
- 협력을 설계
- 객체들을 포괄하는 타입에 적절한 책임을 할당
- 구현하기
참고
- 객체지향 세계에서는 모든 객체가 능동적인 존재
출처