depromeet / pumping-ios Goto Github PK
View Code? Open in Web Editor NEWMicro Feature Architecture Best Practice
Micro Feature Architecture Best Practice
토큰 및 유저정보를 저장할 키체인 스토어를 구축
Root View를 구성합니다.
Pretendard Font, Color 값들에 접근하기 위한 공용 디자인 시스템을 구축
로그인을 제외한 권한 획득 부터 홈화면 진입까지의 플로우를 개발
Core Layer의 Network 모듈을 구현
결정된 사항을 정리합니다.
Tuist로 패키지 및 폴더를 강제하므로, 폴더 이름에서 중복을 제거하는 것으로 합니다.
Feature/FeatureOnboarding/FeatureOnboardingHome
->
Feature/Onboarding/Home
오래된 이슈였는데, 결국 View와 Store가 모두 Interface에 있어야 View 타입을 재사용할 수 있다는 결정이 있었습니다.
아래의 이슈를 해결하고자 하기 위함입니다. 같은 레이어의 모듈간 Implements를 서로 몰라야하고 Interface로만 소통해야 함입니다.
또한 store의 구현부를 빼낸 것처럼 할수 있었지만, 그럴 필요가 없다는 결론을 내렸습니다. View는 껍데기일 뿐이고, Store가 핵심 비즈니스 로직을 담당하기 때문에 이부분만 빼내면 된다는 판단입니다.
즉 FeatureHome과 FeatureProfile은 Interface로 소통하고, Feature에서 FeatureHome과 FeatureProfile을 컴포지션 합니다.
// FeatureHome에서 FeatureProfile이 필요한 상항에서 다음과 같이 해결합니다.
// Feature
import FeatureProfile
import FeatureProfileInterface
import FeatureHome
import FeatureHomeInterface
let makeOtherProfileView: (...) -> OtherProfileView = { ... in
return OtherProfileView(store: ...)
}
HomeRootView(..., makeOtherProfileView: makeOtherProfileView)
// FeatureHome
struct HomeRootView: View {
let makeOtherProfileView: (...) -> OtherProfileView
public init(..., makeOtherProfileView: @escaping (...) -> OtherProfileView) {
...
self.makeOtherProfileView = makeOtherProfileView
}
}
Cell은 재사용을 위한 struct임이 분명하고, CellView와 CellStore로 나누어서 파일을 관리합니다. Cell이 상태를 갖게 설계하는 것을 피하며, 반드시 부모에게 내려받는 상태로 관리하는 것으로 하는 것을 강제합니다.
Button, TextField 등 으로 사용되는 공통 컴포넌트는 Binding 키워드를 통해 관리합니다.
물론 상태는 부모에서 관리합니다.
Onboarding, Apple Login, HealthKit Auth 개발
실사용 제안점
한번만 쓰일 모듈은 static framework로 가져가는 것이 런타임 시 속도 측면에서 이득
재사용 되는 모듈은 dynamic framwork로 가져가는 것이 앱 사이즈 측면, 중복 측면에서 이득
각 피쳐에서 Sheet, FullScreenSheet, Navigation을 한군데서 관리하기 위한 Router를 개발한다.
watchOS와 iOS 앱 연동 데모 앱
프로젝트 구성을 위해서, 샘플코드를 추가하여서 전체 학습을 돕는 목적입니다.
아직 기획전이긴 하지만, 최대한 예측해서 작성해보면 좋을 것 같습니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.