일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 테스트주도개발
- 개발방법론
- 이펙티브코틀린
- FP
- 아키텍처
- 책스터디
- Kotlin
- Boot Legacy 차이점
- 클린아키텍처
- 개발서적
- 테스트
- template
- 추상화 설계
- Spring
- DDD
- 만들면서배우는클린아키텍처
- 도메인 주도 개발 시작하기
- 조영호
- 계층형아키텍처
- web
- 헥사고날아키텍처
- GrokkingFunctionalProgramming
- 코틀린
- 객체지향의사실과오해
- TDD
- Java
- 함수형프로그래밍
- 스터디
- 유지보수
- Thymeleaf
- Today
- Total
김동형수 개발기
Grokking Functional Programming - 2부 6장 본문
Grokking Functional Programming - 2부 6장
김동형수 2022. 12. 21. 23:356부 오류처리
이 장에서는 다음을 수행하는 방법을 배웁니다.
- null 및 예외 없이 모든 오류를 처리합니다 .
- 모든 코너 케이스가 처리되었는지 확인하십시오.
- 함수 서명에서 가능한 모든 오류를 나타냅니다.
- 다른 가능한 오류가 있는 경우 더 작은 기능에서 더 큰 기능을 구성합니다.
- 사용자에게 친숙하고 설명적인 오류를 반환합니다.
오류 없는 프로그램을 작성하는 방법에는 두 가지가 있습니다. 세 번째 것만 작동합니다.
— Alan Perlis, "프로그래밍에 대한 에피그램"
TvShow show = parseShow(invalidRawShow);
if(show != null) {
// do more things with the show
}
매우 나쁜 인체 공학! 비즈니스 논리에 집중하는 대신 우리 기능을 사용하는 개발자는 동작할 수 있는 두 가지 다른 방식에 대해 생각해야 합니다.
Option유형이 잠재적 오류에 대한 정보를 전달 한다는 것입니다 . 그리고 명시적으로 서명의 일부로 만들어서 수행합니다
Options 만 사용하도록 제한하더라도 정확히 동일한 이점을 얻습니다.
- 두 서명 모두 거짓말을 하지 않고 반환되는 내용을 알려주며 결과 없이 실패할 수 있음을 알려줍니다.
- 두 기능 모두 전체 응용 프로그램을 충돌시키지 않으며 가능한 모든 오류가 다른 곳(클라이언트 중 하나에 의해)에서 처리되도록 합니다.
Option 에는 이미 orElse 라는 함수가 있습니다
기능적으로 프로그래밍한다는 것은 일반적으로 더 많은 컴파일 오류가 발생한다는 것을 의미
FP에서는 런타임 충돌보다 컴파일 오류를 선호합니다.
None 또는 Some 일 수 있는 Option 으로 작업하고 있습니다 . 따라서 정보 손실 없이 목록 으로 변환할 수 있습니다 . 이것이 Option 에 toList 기능이 내장되어 있는 이유입니다. 호출하면 빈 List ( Option 이 None 인 경우 ) 또는 단일 요소 List ( Some 인 경우)를 얻게 됩니다 .
all-or-nothing
반환 값에 오류 세부 정보를 전달해야 합니다.
어떤 것이 실패하면 그 이유를 알고 싶습니다! Option 은 오류를 처리하고 오류에서 복구하는 데 유용하지만 무언가 실패하면 얻을 수 있는 것은 None 뿐입니다 . 따라서 우리는 Option 처럼 작동 하지만 추가로 오류에 대한 특정 정보를 제공하고 전파할 수 있는 무언가가 필요합니다.
None이 발생하는 사유를 알고 싶을때
Either[A, B] A(left) 예외 발생 시 사유 넣기, B(Right) 성공 시 처리할 데이터
'책 스터디 > [완료] FP - Grokking Funtional Programming' 카테고리의 다른 글
Grokking Functional Programming - 2부 8장 (0) | 2023.01.11 |
---|---|
Grokking Functional Programming - 2부 7장 (0) | 2023.01.04 |
Grokking Functional Programming - 2부 5장 (0) | 2022.12.14 |
Grokking Functional Programming - 1부 4장 (0) | 2022.11.30 |
Grokking Functional Programming - 1부 3장 (0) | 2022.11.23 |