Jaebi의 Binary는 호남선

Flutter - Dartz 본문

Flutter

Flutter - Dartz

jaebijae 2024. 6. 1. 19:23

목차

    Naive Approach:

    class Response{
      Failure? failure;
      Person? person;
      bool get hasError => failure!=null;
      Response(dynamic response){
        if(response is Failure)
          this.failure = response;
        else
          this.person = response;
      }
    }
    
     Response res = Response(failedReponse);
     res.person = validResponse; //now 'res' has both person and failure
    • 발생하는 문제: Response 클래스가 Person과 Failure Attribute 둘을 동시에 initialize할수 있음
      • 우리는 Person 이나 Failure 둘 중 하나만 가지고 있게 하고싶음
    • 에러 체크를 누락 할 수 있음
    • 필요 사항:
      1. 하나의 타입만 가능하게,
      2. 더욱 강력한 에러 핸들링 시행

    Either<L, R> 타입

    • 2개의 타입을 동시에 표현
    • L(left): 실패 케이스
    • R(right): 성공 케이스
    • Fold method 사용하여 두개의 값을 처리
    Either<int, String> response = Right("Hello, im right");
    response.fold(
          (integerValue) => print('Integer : $integerValue'),
          (stringValue) => print('String : $stringValue')
    );
    • => “Hello, im right“을 출력 함

    Actual Use from the Naive Approach:

    class Response {
      Either<Failure, Person> person;
      Response(dynamic response) {
        if (response is Failure)
          person = Left(response);
        else
          person = Right(response);
      }
    }
    • Either를 사용하여 더이상 2개의 인스턴스가 생성되지 않음 (필요사항: a 충족)
    void main() async {
      Person validResponse = Person('Saravana');
      Failure failedReponse = Failure('something went wrong');
      Response myResponse = Response(validResponse);
      myResponse.person.fold(
        (failure) => print('Failed : ${failure.message}'),
        (person) => print('Response : ${person.name}'),
      );
      //prints 'Response : Saravana'
    }
    • Fold()를 사용하여 Failure와 Person의 대한 경우를 모두 처리해야함, 안하면 컴파일 에러 (필요사항: b 충족)

    Reference

     

    Why is Handling Errors in Your App Crucial for Your App's Success? | Appunite

    Do you handle errors in your apps? Have you thought of all of them? Why is it essential to think about them during development? You can find answers to these questions here.

    web.appunite.com

     

     

    Better Error Handling with Either type in Dart

    In this article, I will talk about how we can use a functional programming concept ‘Either Type’ to handle error better in dart.

    medium.com

     

    'Flutter' 카테고리의 다른 글

    Flutter - Internet Connection 확인  (0) 2024.06.01
    Flutter - Open AI 연동  (0) 2024.06.01
    Flutter - 유용한 링크  (0) 2024.06.01
    Flutter - 이슈 해결  (0) 2024.06.01
    Flutter - Clean Architecture  (0) 2024.06.01