비즈니스 로직이란 서비스에 적용할 기능 혹은 효과를 의미한다.
예를 들어 사용자 인증(JWT등), 닉네임 변경 등 서비스에서 제공하는 기능을 의미
1. 비즈니스 로직과 UI 기능 구별하기
UI 로직은 사용자가 서비스를 이용하며 보여지는 외부 요소들, 즉 생김새를 의미한다.
하지만, 비즈니스 로직은 특정한 상황이나 조건에 맞게 설계된 비즈니스에 맞춰진 작업의 흐름이다.
대부분의 비즈니스 로직은 백엔드 API와 DB 사이에서 구현되어야만 한다.
하지만 프론트엔드에서 비즈니스 로직을 이해해야하는 이유는 비즈니스 로직을 인식하고 UI 로직으로 부터 분리 및 백엔드로 보내야 하기 때문이다.
2. '소프트'웨어를 '소프트' 하게
소프트웨어는 '부드러움을 지니도록' 만들어졌다.소프트웨어를 만든 이유는 기계의 행위를 쉽게 변경할 수 있도록 하기 위해서다.
만약 기계의 행위를 바꾸는 일을 어렵게 만들고자 했다면, 우리는 소프트웨어가 아니라 하드웨어라고 불렸을 것이다.
- 클린 아키텍처, 16p -
비즈니스 로직을 이야기 하다보니 액션과 비슷하다는 것을 느꼈다.
비즈니스 로직과 액션은 모두 '순수성'을 깨는 존재들이다.
이는 함수 혹은 컴포넌트의 유지보수와 범용성을 낮추는 결과를 초래할 수 있다.
즉, 함수 혹은 컴포넌트의 순수성(SRP 등)을 유지해 유지보수와 범용성을 관리하는 것이 중요하다.
3. '추출'과 '추상화'
추출(Extraction)과 추상화(Abstraction)는 다르다.
추출은 코드의 일부를 물리적으로 분리하는 작업이며, 코드의 직관성을 높일 수 있으나 코드의 응집성은 떨어질 수 있다.
추상화는 코드의 일부를 보다 일반화된 형태로 개념화 하는 과정이며, 해당 코드의 존재 이유를 기준으로 분리하는 것이다. 이는 코드가 점차 간결하게 작성되는 것을 돕는다.
추상화를 잘 한다면 코드를 독립적으로 사용 가능하며, 재사용, 교체했을때 영향을 안받게 만들 수 있다.
이를 모듈화라고 한다.
4. 캡슐화
객체 지향 프로그래밍에서 중요한 개념으로, 데이터(변수)와 그 데이터를 처리하는 함수(메서드)를 하나의 '캡슐' 내부에 담아 외부에서 직접적으로 접근할 수 없도록 하는 것을 의미한다.
캡슐화(Encapsulation)는 객체 지향 프로그래밍에서 다음 2가지 측면이 있다.
1. 객체의 속성과 메서드를 하나로 묶음
2. 실제 구현 내용 일부를 내부에 감춰 은닉한다.
이를 통해 코드는 데이터의 무결성과 보안을 유지하며 외부의 영향으로부터 코드를 보호한다.
캡슐화가 잘 되어 있는 코드는 기능별로 구분되어 있고 이해하기 쉬우며, 유지보수가 용이하다.
우리가 많이들 사용하는 useQuery와 같은 것들을 생각하면 된다.
5. 추상화 벽과 어탭터
추상화 벽(레벨)
remove_item_by_name() 내부에서 서로 추상화 수준(레벨)이 다른 로직들이 서로 뒤섞여 있다.
(고수준 : removeItems(), 저수준 - for loop, array index)
코드의 일관성이 떨어지고 유지 보수성이 떨어진다.
(참고 : SLASH 21 - 실무에서 바로 쓰는 Frontend Clean Code)
로직간 추상화 레벨을 맞추면 가독성도 좋아지고, 상위 코드는 하위 코드에 대한 관심을 줄일 수 있다.하위 코드가 수정되더라도 동일하게 동작한다면 상위 레벨 코드는 수정에서 자유롭게된다.
어뎁터
추상화 벽에서 레벨을 마춰주기 위한 도구이며, 상위 코드의 가독성과 유지보수에 도움을 준다.
트랜스 혹은 돼지코를 생각하면 된다.
'회고록 > React 프리온보딩' 카테고리의 다른 글
React 3회차: SOLID한 컴포넌트 만들기 (0) | 2023.12.14 |
---|---|
React 1회차: 일을 줄이는 일(액션과 계산의 분리, 순수 함수 부가 효과) (1) | 2023.12.06 |