각 계층별로 나누고
역할별로 클래스를 정의하고 구조화 하고
최소단위로 한 기능만에 대한 함수를 구현하는 이유는
SOLID원칙에도 원칙을 정하고 있지만,
그 근본적인 이유는
1. 가독성이 높아진다.
2. 분석-설계-구현에 대한 관점을 단순화 할 수 있다 > 집중할 수 있다
3. 이것으로 인해, 의존/결합에 연관된 것들이 단순화 될 수 있음 > 버그&사이드 이펙트가 적어짐.
4. 위 관점에 대해 테스트 개발 및 처리하기 쉬워진다. (유닛테스트, UI테스트)
5. 각 요구사항에 따라 변경에 따라 영향범위가 적어진다.
가 아닐까??
그래서 현 시점에서
View - ViewModel - Domain -(Action&State Machine)- DataSource - Api/DB 로 하는것이 맞는것 같음.
또한,
이러한 각 계층별에 대한 관점과 역할의 정의가 중요하다고 생각된다.
(정리는 시간날때 해보자..ㅋ)