프리온보딩 FE 챌린지, 비지니스로직(1)
이번 달도 역시 원티드에서 하는 프리온보딩 FE챌린지 강의에 신청하여 듣게 되었다.
이번 달은 지금까지 강의 중 제일 기대가 되는 주제인 비즈니스로직에 대해 다룬다.
기대만큼이나 다른 강의에 비해 참여자도 엄청 많았다.
'일을 줄이기 위한 일'을 해야 하는 이유!
강의에서는 제품을 만들 때 제품이 점점 못생겨지는 이유는 화려한 스킬들을 몰라서가 아닌
그보다는 개선에 시간을 투자할 여력이 없어서 생긴 게 아닌가?라는 생각을 했다고 한다
새 프로젝트를 만들어 다시 시작한다 하더라도 실력이 동일하다면
읽기 힘들고, 재사용성이 떨어지고, 분리하기도 힘든 코드가 또다시 나오게 될 것이다.
이러한 이유는 우리의 현실 자체가 복잡하고, 코딩을 할수록 그 복잡도가
제품에 점차 반영되며 다른 하나는 그 복잡함이 어느 정도까지 복잡해질지 요구받아보기
전까지 절대 알 수 없기에최적 구조를 미리 정할 수 없다.
결국 복잡함을 다루기 위해서는 요구 사항에 대한 정보와 이를 처리할 시간과,
능력이 있어야 하는데 현실적인 상황들에서는 대체로 모두 부족하다.
이미 복잡해진 코드를 수정하는 일의 비용(시장 기회, 개발자의 인건비 등)은
기하급수적으로 증가하기 때문에 틈틈이 “일을 줄이는 일”을 해야 한다!
그래서' 일을 줄이는 일'이 뭐죠?
- 빠르게 코드를 이해할 수 있는 코드 구조를 만들고,
하나의 수정 사항으로 인하여 다른 코드에 미치는 영향을 줄이는 것이다. - 수정 사항을 줄이려면 수정의 이유와 시점이 서로 다른 코드들을 분리 /
격리하여 작성해야 한다. 그리고 이러한 목적을 달성하기 위한 여러 가지
기법들을 활용할 준비가 되어 있어야 한다.
이러한 코드들을 만들기 위해서는 정말 시간이 필요로 하고 노력도 필요로 할 것이다.
그렇기 때문에 강의에서는 데이터, 계산, 액션을 판단하는 것만으로도
추상화하고 리펙토링 하는 데에 많은 시간을 줄일 수 있다고 한다.
데이터는 말 그대로 해당 코드가 데이터인지 state , 변수 등 등 이 될 테고
계산과 액션이 중요한데 함수형 프로그래밍의 개념이 조금 들어가는 것 같았다
먼저 순수 함수
순수함수란 사이드 이펙트가 없는 함수, 즉 함수의 실행이 외부에 영향을 끼치지 않는 함수를 뜻하고,
입력으로 전달된 값을 수정하지 않는 불변성을 가지고 있습니다. 따라서 순수함수는
어떠한 전달인자가 주어지더라도 항상 똑같은 값이 리턴됨을 보장합니다.
계산은 순수함수에 해당할 것이고 액션은 그렇지 않을 가능성이 높다
해당하는 코드는 그저 숫자 인자를 받아 계산 후 계산 된 값을 반환하는 순수함수이다.
외부 상태에 영향을 주지 않고(사이드 이펙트가 없음), 주어진 인자에 똑같은 반환값을 반환한다.
받은 데이터를 해당과 같이 filter메서드를 사용해 정렬하는 것도 "계산"!
액션은 쉽게 순수 함수가 아닌 함수가 외부 상태의 영향을 주는 함수가 될 수 있겠다 (부수 효과를 가진 함수)
해당 부분에서 api 요청을 통해서 받아온 결과 값을 이용해 새로운 date를 생산하고
setUserGroups()를 이용해 외부 상태를 변경하고 있다.
‘계산’인 함수들은 컴포넌트 바깥으로 분리해도 무리가 없지만. 반면 ‘액션’에 속하는 함수들은
부수 효과를 일으키며 컴포넌트 바깥으로 분리하기 어렵고 만약 다른 ‘계산’ 로직들과 합쳐진다면
그들 또한 액션으로 만들어 버린다.
이외에도 setState가 비동기 처리를 하는 이유와 부수효과를 일으키는 이유,
redux와 react-query등에 대해서도 애기가 나왔었는데 이 부분은 다시 정리하려고 한다.
정말 이번 챌린지는 대박 무료 강의인 것 같아 앞으로 3번의 강의도 기대가 된다.