일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Java
- FP
- 헥사고날아키텍처
- 계층형아키텍처
- 코틀린
- 클린아키텍처
- TDD
- 개발방법론
- 객체지향의사실과오해
- Boot Legacy 차이점
- 스터디
- 개발서적
- DDD
- 조영호
- 아키텍처
- 추상화 설계
- 함수형프로그래밍
- 이펙티브코틀린
- 도메인 주도 개발 시작하기
- 테스트
- web
- template
- GrokkingFunctionalProgramming
- Spring
- 테스트주도개발
- Kotlin
- 만들면서배우는클린아키텍처
- 책스터디
- 유지보수
- Thymeleaf
- Today
- Total
목록책 스터디 (77)
김동형수 개발기
2부 xUnit 예시 xUnit 아키텍처는 파이썬에서 매끄럽게 도출되기 때문에 자바에서 파이썬으로 언어를 바꾼다. 2부가 끝나면 파이썬에 대해 개론적으로 이해하고, 자신만의 테스트 프레임워크를 작성할 수 있고 좀 더 교묘한 TDD의 예를 알게 될 것이다. 18장 xUnit으로 가는 첫 걸음 테스트 메서드 호출하기 먼저 setUp 호출하기 나중에 tearDown 호출하기 테스트 메서드가 실패하더라도 tearDown 호출하기 여러 개의 테스트 실행하기 수집된 결과를 출력하기 첫 번째 원시 테스트에는 테스트 메서드가 호출되면 true, 그렇지 않으면 false를 반환하는 프로그램이 필요하다. 클래스 이름과 플래그 명은 각각 WasRun, wasRun 으로 한다. 테스트 코드를 작성하고 실행이 되게끔 WasRu..
10장 흥미로운 시간 할일목록 $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 클래스를 제거하기 위한 명백한 방법이 없다. times에서 팩토리 메서드를 호출했지만, 팩토리 메서드의 내용을 인라인 시킨다. 깔끔한 코드와 코드가 잘 동작할 거라는 믿음을 줄 수 있는 테스트 코드들이 있다. 고민을 하기 보다..
9장 우리가 사는 시간 할일목록 $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 동일한 구현 후 공통 상위 클래스에 관련 내용을 push up 한다. 통화를 인스턴스 변수에 저장하길 원한다. 두 curre..
16장 드디어 추상화 할일목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 + $5 = $10 $5 + $5에서 Money 반환하기 Bank.reduce(Money) Money에 대한 통화 변환을 수행하는 Reduce Reduce(Bank, String) Sum.plus Expression.times Expression.plus를 끝마치려면 Sum.plus를 구현해야한다. 그리고 Expression.times를 구현하면 전체 예제가 끝난다. Sum.plus에 대한 테스트이다. fiveBucks, tenFrancs를 더해서 Sum을 생성할 수도 있지만 위의 코드에서는 명시적으로 Sum을 생성하는데, 이게 더 직접적으로 우리 의도를 드러낸다. 할일목록 $5 + 10CHF = $10(환율이 2:..
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)을 반환할 수 있지만, 어떻게 구현해야 할지 명확..