일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 책스터디
- GrokkingFunctionalProgramming
- Java
- FP
- Spring
- 객체지향의사실과오해
- 스터디
- 아키텍처
- 추상화 설계
- 코틀린
- 클린아키텍처
- 개발방법론
- 계층형아키텍처
- 개발서적
- web
- 헥사고날아키텍처
- DDD
- 유지보수
- TDD
- 테스트
- 조영호
- 만들면서배우는클린아키텍처
- Kotlin
- Thymeleaf
- 함수형프로그래밍
- template
- Boot Legacy 차이점
- 이펙티브코틀린
- 테스트주도개발
- 도메인 주도 개발 시작하기
- Today
- Total
목록책 스터디 (77)
김동형수 개발기
4부 가치로서의 기능 이 장에서는 다음을 수행하는 방법을 배웁니다. 함수를 인수로 전달 sortBy 함수 사용 맵 및 필터 기능 사용 함수에서 함수 반환 함수를 값으로 취급 foldLeft 기능 사용 제품 유형을 사용하여 불변 데이터 모델링 4.1 요구 사항을 기능으로 구현 기능 측면에서 비즈니스 요구 사항을 생각하고 순수 기능을 값으로 취급하는 방법이 얼마나 유용한지 알아봅니다. 단어 순위 · 주어진 단어의 점수는 'a' 가 아닌 각 문자에 대해 1점을 주어 계산됩니다. · 주어진 단어 목록에 대해 가장 높은 점수를 받은 단어로 시작하는 정렬된 목록을 반환합니다. 4.2 불순한 함수와 가변 값 반격 주어진 단어에 대한 점수를 반환하는 함수가 이미 있습니다. static int score(String w..
3장 불변 변수 이 장에서 배울 것입니다 가변성이 위험한 이유 사본으로 작업하여 가변성과 싸우는 방법은 무엇입니까? 공유 가변 상태는 무엇입니까? 불변 값으로 작업하여 가변성과 싸우는 방법 문자열 및 목록 의 불변 API를 사용하는 방법 3.1 엔진 연료 순수함수가 가변 상태를 사용할 수 없는 이유를 설명한다. 순수 함수와 불변 값 사이의 관계는 매우 강해서 다음 두 가지 개념만 사용하여 함수형 프로그래밍을 정의할 수 있습니다. Q 절대 변경될 수 없는 순수한 함수와 값만을 사용하여 완전히 작동하는 애플리케이션을 작성하는 것이 어떻게 가능합니까? A 짧은 대답은 순수 함수가 데이터의 복사본을 만들어 전달하는 것입니다. 사본을 사용하여 쉽게 프로그래밍할 수 있으려면 언어의 특정 구조가 필요합니다. 이 장과..
2장 순수함수 이 장에서 배울 내용 순수 함수가 필요한 이유는 무엇입니까? 데이터 사본을 전달하는 방법 저장하는 대신 다시 계산하는 방법 상태를 전달하는 방법 순수 함수를 테스트하는 방법 2.1 순수 함수가 필요한 이유는 무엇입니까? 거짓말 하지 않는 함수, 시그니처만으로 모든 동작이 예상되는 신뢰할 수 있는 함수, 그것을 순수함수라고 한다. 순수함수는 코딩할 때 버그가 날 확률이 적어진다. 장바구니 할인 요구사항 요구 사항: 장바구니 1) 모든 항목( 문자열 로 모델링됨 )을 카트에 추가할 수 있습니다. 2) 장바구니에 책이 추가된 경우 5% 할인됩니다. 3) 추가된 도서가 없을 경우 할인율은 0%입니다. 4) 카트에 있는 항목은 언제든지 액세스할 수 있습니다. 2.2 명령형 코딩 public clas..
1장 Learning Functional Programming 이 장에서 배우게 될 누구를 위한 책인가 기능이란 무엇입니까 함수형 프로그래밍이 얼마나 유용한지 필요한 도구를 설치하는 방법 이 책을 사용하는 방법 1.1 아마도 당신이 이 책을 집어든 이유는... 함수형 프로그래밍이 궁금하거나, 이전에 배우려고 했거나, 수년간 객체지향 또는 명령형 언어로 하다가 함수형의 맛을 잠깐 본 경우, 아니면 실습위주의 학습을 통한 성장 1.2 시작하기 전에 알아야 할 사항은 무엇입니까? 널리 사용되는 언어(아래의 예제는 java)로 이전에 개발을 했을 때 클래스 및 객체와 같은 기본 객체 지향 개념에 익숙한 경우 편안하게 따라할 수 있다. 소프트웨어 모듈의 안정성, 테스트 가능성, 회귀 또는 통합에 문제가 있는 경우..
31장 리팩토링 TDD에서는 리팩토링을 특이한 방법으로 사용한다. 일반적으로 리팩토링은 어떤 상황에서도 프로그램의 의미론을 변경해서는 안 된다. 하지만 TDD에서 우리가 신경 쓰는 부분은 현재 이미 통과한 테스트들뿐이다. 예를 들어 TDD에서는 상수를 변수로 바꾸고 양심에 거리낌 없이 이를 리팩토링이라고 부른다. 왜냐하면 이 행위가 통과하는 테스트의 집합에 아무 변화도 주지 않기 때문이다. ‘관측상의 동치성’이 성립되려면 충분한 테스트를 가지고 있어야 한다. 충분한 테스트란, 현재 가지고 있는 테스트들에 기반한 리팩토링이 추측 가능한 모든 테스트에 기반한 리팩토링과 동일한 것으로 여겨질 수 있는 상태를 말한다. 차이점 일치시키기 추론 과정이 길어지면 지금 고치려고 하는 부분이 결과에 영향을 주지 않을 거..
30장 디자인 패턴 패턴의 주요한 통찰이 하나 있으니, 우리가 언제나 완전히 다른 문제들을 해결하는 것 같지만 우리가 푸는 문제 대다수는 사용하는 도구에 의해 생기는 것이지 직면한 외부의 문제 때문에 생기는 것이 아니라는 점이다. 이런 이유로, 심지어 외부적 문제 해결 컨텍스트가 엄청나게 다양하더라도 공통의 해결책을 가진 공통의 문제를 발견할 것을 기대할 수 있다. 디자인 패턴의 엄청난 성공은 객체 프로그래머들이 보는 공통성에 대한 증거다. TDD에서는 설계를 디자인 패턴과는 조금 다른 관점으로 본다. -커맨드:계산 작업에 대한 호출을 메시지가 아닌 객체로 표현한다. -값 객체:객체가 생성된 이후 그 값이 절대로 변하지 안헥 하여 별칭 문제가 발생하지 않게 한다. -널 객체:계산 작업의 기본 사례를 객체..
27장 테스트 패턴 자식 테스트 작은 테스트 케이스를 작성하고 그 작은 테스트 케이스가 실행되도록 하라. 그 후에 다시 원래의 큰 테스트 케이스를 추가하라. 빨강/초록/리팩토링 리듬은 성공이 지속되는데 중요하다. 나는 큰 테스트를 작성하고 나면 우선 교훈을 찾기 위해 노력한다. 왜 테스트가 그렇게 컸을까? 어떤 다른 방식을 취했더라면 좀더 작게 만들 수 있었을까? 모의 객체 비용이 많이 들거나 복잡한 리소스에 의존하는 객체를 테스트하려면 어떻게 해야 할까? 상수를 반환하게끔 만든 속임수 버전의 리소스를 만들면 된다. 마치 데이터베이스인 것처럼 행동하지만 실제로는 메모리에만 존재하는 객체를 통해 작성될 수 있다. 성능과 견고함 이외에 모의 객체의 또 다른 가치는 가독성에 있다. 모의 객체는 당신이 모든 객..
29장 xUnit 패턴 단언(assertion) 불리언(boolean) 수식을 작성해서 여러분 대신 프로그램이 자동으로 코드가 동작하는지에 대한 판단을 수행하도록 하라. 테스트를 완전히 자동화하려면 결과를 평가하는 데 개입되는 인간의 판단을 모조리 끄집어내야 한다. 버튼을 누르면 컴퓨터가 실행하는 코드의 작동이 올바른지 검증하는 데 필요한 모든 판단이 되어야 하는 것이다. -판단 결과가 불리언 값이어야 한다. 일반적으로 참 값은 모든 테스트가 통과했음을 의미하고, 거짓 값은 뭔가 예상치 못했던 일이 발생했음을 의미한다. -이 불리언 값은 컴퓨터에 의해 검증되어야 한다. 단언은 구체적이어야 한다. 코드가 제대로 작동하는지를 판다낳기 위한 용도로 변수를 사용하길 원한다면 언제나 설계를 향상할 수 있는 기회가..