일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TDD
- 책스터디
- Kotlin
- Spring
- Boot Legacy 차이점
- 만들면서배우는클린아키텍처
- 개발방법론
- DDD
- 헥사고날아키텍처
- 조영호
- GrokkingFunctionalProgramming
- 테스트
- FP
- 추상화 설계
- 개발서적
- 이펙티브코틀린
- 객체지향의사실과오해
- 아키텍처
- 유지보수
- Java
- 클린아키텍처
- template
- 도메인 주도 개발 시작하기
- 함수형프로그래밍
- web
- Thymeleaf
- 테스트주도개발
- 스터디
- 계층형아키텍처
- 코틀린
- Today
- Total
목록책 스터디 (77)
김동형수 개발기
11장 모든 악의 근원 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar / Franc 중복 공용 equals 공용 times Franc와 Dollar 비교하기 통화? testFrancMultiplication 제거 Dollar, Franc에는 이제 달랑 생성자 밖에 없다. 단지 생성자 때문에 하위 클래스가 있을 필요는 없기 때문에 제거하는게 좋겠다. 코드의 의미를 변경하지 않으면서도 하위 클래스에 대한 참조를 상위 클래스에 대한 참조로 변경할 수 있다. 이후 중복이 되는..
8장 객체만들기 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar / Franc 중복 공용 equals 공용 times Franc와 Dollar 비교하기 통화? Franc, Dollar times() 코드가 거의 똑같다. 타입을 Money로 반환하면 더 비슷하게 만들 수 있다. 다음 단계로 뭘 해야 할지 명확하지 않다. Money의 하위 클래스는 많은 일을 하는 것 같지 않으므로 아예 제거해버리고 싶다. 한번에 큰 단계를 밟는 것은 TDD를 효과적으로 보여주기에 적절하지 ..
7장 사과와 오렌지 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar / Franc 중복 공용 equals 공용 times Franc와 Dollar 비교하기 Franc과 Dollar 비교하면 무슨일이 벌어질까? 실패하는 테스트 코드 작성 금액과 클래스가 서로 동일할 때만 두 Money가 서로 같은 것이다. 자바 객체의 용어보다는 재정 분야에 맞는 용어를 사용하고 싶다. 현재는 통화 개념 같은 게 없고, 통화 개념을 도입할 충분한 이유가 없어 보이므로 잠시 동안은 이대로 둔..
6장 돌아온 '모두를 위한 평등' 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF Dollar / Franc 중복 공용 equals 공용 times 5장에서 복사 붙여넣기 후 수정을 통해서 중복코드를 생성했기 때문에 중복을 제거해야한다. 상위 클래스인 Money가 equals를 갖게 한다면 어떨까? 간단한 것부터 시작해보자. Money 클래스 생성한다고 해도 테스트는 여전히 통과한다. Dollar가 Money 클래스를 상속받는다고 해도 여전히 깨지지 않는다. 여전히 깨지지 않는다. ..
5장 솔직히 말하자면 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object 5CHF X 2 = 10CHF 프랑(Franc)을 표현할 객체를 Dollar 곱하기 테스트를 복사해서 작성한다. Dollar 복사 붙여넣기 후 수정하기 생각 야유와 비난 ( 개발자로서의 자질의 문제..? ) TDD 리듬 다시 생각하기 테스트 작성 컴파일되게 하기 실패하는지 확인하기 위해 실행 실행하게 만듦 중복 제거 3.1에 의거해서 Dollar를 복사 후 Franc로 변경한다. 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $..
4장 프라이버시 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode() Equal null Equal object Dollar.times() 연산은 결과값을 Dollar 인스턴스를 반환해야 한다. 하지만 테스트가 정확히 그것을 말하지는 않는다. assertion을 Dollar와 Dollar를 비교하는 것으로 재작성할 수 있다. 임시변수인 product는 제거한다. 변경된 코드에서는 amount필드에 public하게 접근하지 않아서 private로 변경할 수 있다. 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를..
3장 모두를 위한 평등 Dollar 객체같이 객체를 값처럼 쓸 수 있는데 이것을 값 객체 패턴 (value object pattern)이라고 한다. 값 객체의 대한 제약사항 중 하나는 객체의 인스턴스 변수가 생성자를 통해서 일단 설정된 후에는 결코 변하지 않는다는 것이다. 값 객체를 사용하면 별칭 문제에 대해 걱정할 필요가 없는 아주 큰 장점이 있다. 값 객체가 암시하는 것 중 하나는 2장에서와 같이 모든 연산은 새 객체를 반환해야 한다는 것이다. 또 다른 암시는 값 객체는 equals()를 구현해야 한다. 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? equals() hashCode()..
2장 타락한 객체 일상적인 TDD 주기 1. 테스트를 작성한다. 오퍼레이션 코드 상상, 인터페이스 개발, 필요한 요소 모두 포함 2. 실행 가능하게 만든다. 가장 중요한 것은 테스트를 통과 시키는 것이다. 구현하는 방법이 생각이 났어도 메모해놓고 단순한 방법으로 해결 3. 올바르게 만든다. 중복을 제거하고 테스트를 통과시키자. 작동하는 깔끔한 코드를 얻는 것은 최고의 프로그래머조차도 도달하기 힘든 목표일 수 있다. '작동하는', '깔끔한 코드'를 나눠서 부분적으로 해결하자. 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 X 2 = $10 amount를 private로 만들기 Dollar 부작용? Money 반올림? 테스트를 통과했지만 뭔가 이상하다. Dollar에 대해서 연산 수행 ..