ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [플러터 Bloc 마스터] 왜 Bloc을 사용하는가?
    개발일지/flutter 2023. 2. 1. 22:52

    여러분 안녕하세요 개발하는 남자 개남입니다. 

    Bloc 사용해야 하는가? 대해서정리해보겠습니다.

    모든 내용은 Bloc 공식 문서를 바탕으로 정리한 내용입니다. 

     

    Bloc State Management Library

    Official documentation for the bloc state management library. Support for Dart, Flutter, and AngularDart. Includes examples and tutorials.

    bloclibrary.dev

    Bloc은 플러터의 상태관리를 도와주는 패키지로써 Bloc 외에도 Getx, Riverpod, Provider 등 각자의 방식으로 개발자들에게 상태관리를 도와주고 있습니다. 이 시점에서 상태관리를 왜 사용해야 하는지 모르시는 분들의 경우 제가 정리한 영상 오랜 영상이긴 하지만 내용을 들어보시면 도움이 되실 것입니다. 한번 보고 오시는 것을 추천드리겠습니다. 


    Bloc을 사용해야 하는 이유 5가지

    1. 뷰 영역과 비즈니스 영역을 쉽게 구분할 수 있다.

    여기서 뷰의 영역은 화면 UI부분을 뜻하며 사용자의 액션( 터치, 버튼버튼 클릭, 텍스트 필드 입력 ) 받아 이벤트 발생시키는 영역을말합니다. 비즈니스영역은 사용자의 입력에 따라여러 가지 기능(검색,회원가입, 등록, 상품 좋아요 ) 수행하게 되는데 사용자들은 대부분 어떤 과정을 통해 기능을 수행하는지 필요가 없고 관심도 없습니다. 단지 빠른시간 내에 응답을받고 원하는 데이터를 보기를 원할 뿐이죠.  그러한 사용자의 요청을 빠르게 수행하기 위해 로직을 작성하게작성하게 되는 부분을 비즈니스영역이라고 말합니다. 

    뷰와 비즈니스 영역은 서로 상호작용되어 결과를도출해 주는 집합체가하나의 서비스가 되는 것이죠.

    그럼 뷰와비즈니스가한대뷰와 비즈니스가 한대 어우러져서 개발하는 것이 편하지편하지 않을까? 사용자의 버튼 입력을 받고 바로 해당되는 로직을 수행하면 관리도 편하고 좋은데 뷰와비즈니스영역을 쉽게구분하는 것이 장점이되는 것일까요? 물론 개발을할 때 빠르게개발할 있기도 하고 복잡성도 덜할 있습니다. 하지만 그런 코드의 경우 유지보수가 매우어려워지게됩니다매우 어려워지게 됩니다. 화면을화면을 수정해야 하는데 비즈니스로직이 함께버무려져있다 보니 가독성도어렵고 압박적인라인수로 인해화면 수정에 시간이 길어지게 되는 문제가 발생할 있습니다. 그래서 이를 해결하기 위해 mvc mvvm 패턴이패턴이 나온 것이죠. bloc이나 다른 상태관리 라이브러리들도 기본적으로 /비즈니스 영역을 구분하는 것이 기본 베이스가 아닐까 생각이 됩니다. 물론 아직 riverpod 모르겠지만 말이죠.  뷰에 문제가 있으면 뷰에 집중할 있고 로직에 문제가 있으면 로직 부분만 집중해서 작업할 있어서 아주 좋은 방식이라고 있습니다.


    2. 테스트하기 쉽고(TDD), 재사용을 가능하게 해 준다.

    TDD 중점적으로 활용하는 개발자의 경우 장점이 있습니다. bloc_test 라이브러리를 제공해주고 있어서비즈니스로직을 직접 UI 확인하여테스트하는것보다 훨씬 빠르게 체크를 있으며 다양한 상황을 사전에테스트해볼수 있어서 개발에 도움이 되는 부분이기도 합니다.  예를 들어 회원가입에 관한비즈니스로직을작업했는데 이를테스트하기위해서이를 테스트하기 위해서. TDD 없다면 직접 화면에여러 가지 입력값을넣고 하나하나 다양한 예외 상황을 고려하여 직접 수행을 통해 버그등을 찾아 수정해야 하는 작업이 있습니다. 이러한 작업은 번거롭고 시간도 많이 소요되기도 하고 구멍도 발생할 있습니다. 하지만 TDD 통한 여러 상황의 시나리오를 세우고기댓값을설정해 놓으면 초반 설정만으로 앞으로 회원가입의 로직에 대해문제 있는지는 원클릭으로확인이 가능해지는 아주 장점이 있습니다. 이러한이러한 좋은 것을 bloc 사용한다면 손쉽게 가능하다는 강점이 있는 것입니다.

    코드 재사용의 경우는 동일 프로젝트 내의 코드 재사용도 중요하지만 다른 프로젝트에서도 필요한 기능을 가져다가 사용할 수도 있습니다. 그렇다면 개발기간을 단축할 있기 때문에 아주 장점이라고 있습니다. 대신 코드 재사용을잘하기위해서는 기능을 나누고 정말 필요한 부분끼리만 의존성을 맺게해 주는 게 중요합니다.개발 편의만을 생각하고 기능을 이곳저곳에서 연결해서 사용한다면 나중에 코드 재사용을 없게 되는 상황이 발생하게 됩니다. 이러한 강점이 있는 것이 Bloc입니다.


    3. 이벤트 트레킹을 통합적으로 관리할 수 있다.

    BlocObserver라는 게 있어서 이를 통하여 이벤트 트레킹을 통합적으로 관리할 있게 됩니다. 다른 상태관리의 경우는 어떤지 모르겠지만 Getx 경우는 통합적인 이벤트 확인 있는 기능은 없었던 걸로 기억하고그런 것을 구현하기위해서는 추가적인 개발을 해야 가능한 부분입니다. Bloc 정말 간단하게 BlocObserver 등록해주기만 하면 처리가 됩니다.


    4. 통일된 코드 베이스로 일할 수 있다.

    Bloc 룰이 정해져 있기 때문에 개발자들끼리 따로 규칙을 정하지 않고도 동일한 개발 패턴을 따르게 되게 되어있습니다. 그러한 장점은 바로 업무의 효율로 드러나게 되죠. 대신 자유롭게 개발하는 사람들에게는 룰을 따르는 것이 귀찮게 다가올 있는 부분입니다.  


    5. Github에서 가장 높은 Star 수 

    이 부분은 Bloc을 사용해야 이유라고 보기는 어려울 있지만 많은 개발자분들이 Star 많이 줬다는 것은 그만큼 신뢰와 장점이 있다는 것으로생각해 볼 수있는 부분입니다. pub.dev에서의 like 수는 상태관리 중 getx가 가장 높지만 github Star수로는 Bloc 가장 높습니다.

     

    이렇게 Bloc을 사용하는 이유에 대한 5가지 이유를 알아봤습니다. 다음번 포스팅에서는 Bloc의 기본이 되는 Stream에 대해서 정리해 보겠습니다.

    댓글

Designed by Tistory.