한 달의 전의 나는 타인이다.
이 말을 아시나요? 제가 만들어낸 말입니다.
다른 사람의 코드를 볼 때마다, 과거의 내가 짠 코드를 볼 때마다 어디에 뭐가 있는지 모든게 리셋되서 파일을 찾는데 단단히 지쳐버렸습니다... 이제는 FSD를 받아들이기로 했습니다.

→ ex) pages는 widgets를 참조할 수 있지만, widgets는 pages를 참조할 수 없습니다.
pages가 widgets의 상위 layer이기 때문입니다.
(= widgets → pages로 import ❌)
(= pages → widgets로 import ⭕️)
shared , pages , app 은 포함합니다.Layer 내부를 비즈니스 도메인별로 나눕니다.⇒ 이름·개수에 제한이 없으며, 같은 Layer 내 다른 Slice를 참조할 수 없습니다.
왜냐하면 높은 응집도와 낮은 결합도를 유지하기 위해서입니다.
features 폴더에 있다고 해봅시다.features/
├── sign-in/
└── sign-up/
features는 Layer 폴더이고 sign-in , sign-up은 features의 slice에 해당합니다.sign-in → sign-up로 import ❌)sign-in ← sign-up로 import ❌)ui - UI components, date formatter, styles 등 UI 표현과 직접 관련된 코드
api - request functions, data types, mappers 등 백엔드 통신 및 데이터 로직
model - schema, interfaces, store, business logic 등 애플리케이션 도메인 모델
lib - 해당 Slice에서 여러 모듈이 함께 사용하는 공통 library code
config - configuration files, feature flags 등 환경·기능 설정
→ 대부분의 Layer에서는 위 다섯 Segment로 충분합니다.
필요하다면 App 또는 Shared Layer에서만 추가 Segment를 정의하세요. (필수 규칙은 아닙니다.)
slice 를 삭제하거나 수정하더라도 다른 영역에 미치는 영향이 최소화됩니다.⇒ 즉, 우리 프로젝트에 구조 전환이 필요할 때 FSD를 고려하면 좋습니다.
완벽한 프로젝트 구조는 처음부터 나올 수 없다고 생각합니다.
하지만 꾸준히 다듬고 적용하다 보면, 한 달 뒤의 나는 지금의 나를 빠르게 이해하지 않을까요..?ㅎㅎ 아자아자 화이팅!
우와 유목민 fsd로 정착하셨나요?