일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 테스트주도개발
- TDD
- Boot Legacy 차이점
- FP
- 아키텍처
- 헥사고날아키텍처
- template
- Spring
- 만들면서배우는클린아키텍처
- 스터디
- 테스트
- 유지보수
- DDD
- 함수형프로그래밍
- 도메인 주도 개발 시작하기
- 코틀린
- 개발방법론
- 계층형아키텍처
- 개발서적
- 클린아키텍처
- Thymeleaf
- 책스터디
- GrokkingFunctionalProgramming
- 객체지향의사실과오해
- 조영호
- 추상화 설계
- Java
- Kotlin
- 이펙티브코틀린
- web
- Today
- Total
목록개발방법론 (29)
김동형수 개발기
15장 서로 다른 통화 더하기 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 $5 + $5에서 Money 반환하기 Bank.reduce(Money) Money에 대한 통화 변환을 수행하는 Reduce Reduce(Bank, String) $5 + 10CHF에 대한 테스트 추가 원하는 테스트지만 컴파일 에러가 난다. 컴파일 에러는 해결 되었지만 테스트는 15USD가 나오기 때문에 실패한다. Sum.reduce()가 인자를 축약하지 않는 것 같다. 그래서 인자를 모두 reduce하면 테스트는 통과한다. 이제 피가산수와 가산수는 Money -> Expression로 변경할 수 있다. Money에서 plus, time에서 Money 타입을 Expression로 변경하면서..
14장 바꾸기 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 $5 + $5에서 Money 반환하기 Bank.reduce(Money) Money에 대한 통화 변환을 수행하는 Reduce Reduce(Bank, String) 프랑, 달러간의 환전을 다룬다. 작가는 프랑을 달러로 변환할 때 나누기 2를 한다. 테스트를 통과하기 위한 reduce 메서드 구현 위 코드에서 Money가 환율(rate)에 대해 알게되었다. 환율에 대한 일은 모두 Bank가 처리해야 한다. 호출 부분 구현 부분 인터페이스에 선언된 메서드는 공용이어야 하므로 Money의 reduce()도 공용이어야 한다 공용..? public..? 번역..ㅆ 이제(Bank를 매개변수로 넘기기 때문에) 환율은 B..
13장 진짜로 만들기 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 가짜 구현에서 진짜 구현하는데 어떻게 거꾸로 작업해야하는지 명확하지 않다. 조금 불확실하지만 순방향으로 작업해보자. 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 $5 + $5에서 Money 반환하기 두 Money의 합을 연산을 하는 내용은 Expression의 구체 클래스인 Sum에 피가산수/가산수를 통해서 정보를 알 수 있고 Bank.reduce메서드에서 이 Sum의 값을 읽고 피가산수/가산수의 통화단위가 같은지 확인 후 같을경우 Money를 반환한다. 테스트 통과를 유지하면서 리펙토링을 진행하도록 한다. Money 클래스에서도 reduce를 구현하게 ..
12장 드디어 더하기 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) Money 반올림? hashCode() Equal null Equal object 할일 목록이 조금 지저분해서 정리되지 않은 항목들만 새 목록으로 옮긴다. 작가는 손으로 적는걸 좋아하고, 할일 목록이 많으면 옮기기 보다는 그냥 처리하는 경향이 있고, 게으르기 때문에 누적될 만한 자잘한 일들을 처리한다고 한다. 자신의 강점을 살리는 방향으로 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 Money 반올림? hashCode() Equal null Equal object 테스트를 통과시키기 위해서 가짜구현 ( Money.dollar(10)을 반환할 수 있지만, 어떻게 구현해야 할지 명확..
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 클래스를 상속받는다고 해도 여전히 깨지지 않는다. 여전히 깨지지 않는다. ..