본문 바로가기

Books5

테스트 주도 개발 정리 - (2) "테스트 주도 개발 (Test-Driven Development: By Example)" 6장 ~ 10장까지 읽고 정리한 글입니다. [6장] 돌아온 ‘모두를 위한 평등’ 테스트를 빨리 통과하기 위해 코드를 복사해서 붙이는 엄청난 죄를 저질렀다. 이제 청소할 시간으로, 할일 목록은 다음과 같다. 현재 할일 목록은 다음과 같다. $5 + 10CHF = $10 $5 * 2 = $10 amount 를 private 으로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar/Franc 중복 공용 equals 공용 times Dollar/Franc 두 클래스의 공통 상위 클래스로 Money 를 사용하.. 2022. 1. 19.
테스트 주도 개발 정리 - (1) "테스트 주도 개발 (Test-Driven Development: By Example)" 1장 ~ 5장까지 읽고 정리한 글입니다. 1부에서는 완전히 테스트에 의해 주도되는 전형적 모델 코드 개발 과정을 따라간다. 1장부터 5장까지는 상위 클래스로 추상화를 하기 이전에 테스트 주도 개발의 주기를 따라가는 기본적인 내용이 등장한다. 테스트 주도 개발 (TDD) 의 리듬은 다음과 같이 요약할 수 있다. 재빨리 테스트 하나를 추가한다. 모든 테스트를 실행하고 새로 추가한 것이 실패하는지 확인한다. 코드를 조금 바꾼다. 모든 테스트를 실행하고 전부 성공하는지 확인한다. 리팩토링을 통해 중복을 제거한다. 이러한 리듬을 통해 다음을 배울 수 있을 것이다. 각각의 테스트가 기능의 작은 증가분을 어떻게 커버하는지 새 테.. 2022. 1. 10.
객체지향의 사실과 오해 정리 - (3) "객체지향의 사실과 오해" 의 5장/6장의 읽고 정리한 글입니다. 5. 책임과 메시지 명확한 책임과 역할을 지닌 참가자들이 협력에 참여해야 한다! 적절한 책임이 스스로의 의지와 판단에 따라 각자 맡은 책임을 수행하는 자율적인 객체를 낳고, 자율적인 객체들이 모여 유연하고 단순한 협력을 낳는다. 따라서 협력에 참여하는 객체가 얼마나 자율적인지가 전체 애플리케이션을 품질을 결정한다. 자율적인 객체 객체가 책임을 자율적으로 수행하기 위해서 객체에게 할당되는 책임이 자율적이어야 한다. 책임이 수행할 방법을 제한할 정도로 구체적인 것도 문제이지만, 협력의 의도를 명확하게 표현하지 못할 정도로 추상적인 것 역시 문제이다. 책임은 협력에 참여하는 의도를 명확하게 서명할 수 있는 수준 안에서 추상적이어야 한다. 자율적.. 2021. 12. 29.
객체지향의 사실과 오해 정리 - (2) "객체지향의 사실과 오해" 의 3장/4장의 읽고 정리한 글입니다. 3. 타입과 추상화 추상화 추상화란 현실에서 출발하되 불필요한 부분을 도려내가면서 사물의 놀라운 본질을 드러나게 하는 과정이다. 추상화의 목적은 불필요한 부분을 무시함으로써 현실에 존재하는 복잡성을 극복하는 것으로, 훌륭한 추상화는 목적에 부합해야하는 것이다. 추상화의 수준, 이익, 가치는 오로지 목적에 의존적이다. 추상화는 다음과 같이 2가지 차원에서 이루어진다. 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만든다. 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만든다. 개념 객체들의 공통적인 특성을 기준으로 여러 그룹으로 묶어 다뤄야 하는 가짓수를 줄임으로써 상황을 단순화하는데,.. 2021. 12. 29.
객체지향의 사실과 오해 정리 - (1) "객체지향의 사실과 오해" 의1장/2장을 읽고 정리한 글 입니다. 1. 협력하는 공동체 1장에서는 실세계에서 사람을 바라보는 관점을 바탕으로, 객체지향에서 객체를 바라보는 관점에 적용할 수 있는 부분과 차이나는 부분을 다룬다. 실세계와 객체지향 객체지향의 목표는 실세계를 모방하는 것이 아니다. 오히려 새로운 세계를 창조하는 것이다. 소프트웨어 개발자의 역할은 고객과 사용자를 만족할 수 있는 신세계를 창조하는 것이다. 하지만 실세계에 대한 비유가 객체지향의 다양한 측면을 이해하고 학습하는 데 매우 효과적이다. 실세계의 관점 객체지향에서 가장 중요한 개념 3가지는 역할, 책임, 협력이다. 카페에서 손님이 커피를 주문하고 바리스타가 커미를 제조하는 과정 사이에는 손님, 캐시어, 바리스타 사이의 암묵적인 협력 .. 2021. 12. 28.