Git Product home page Git Product logo

africa's Introduction

Africa

iOS best practice project. 모듈화, 클린아키텍쳐 도입.

Screens

Tech

  • SwiftUI
  • MapKit
  • Sticker Pack
  • AVKit
  • DI(Swinject)

Architecture

모듈화

비슷한 책임을 갖는 코드끼리 묶어 모듈로 나누었습니다. 모듈화를 해서 모듈끼리의 의존 관계를 설정하고, 코드의 결합도를 낮추고, 응집도를 높입니다. 이로 인해 프로젝트의 유지 보수성이 좋아집니다. 모듈 별로 책임이 다르기 때문에 다른 사람이 봤을 때 이런 코드가 이런 모듈 안에 들어갈 것 같다고 예측을 할 수 있습니다. 코드 가독성과 개발 효율이 높아집니다. 의존성 없이 잘 만들어 놓은 모듈은 다른 프로젝트에서도 재활용할 수 있습니다.

클린 아키텍처

  • Data Layer : 백엔드 or 로컬 데이터로부터 데이터를 가져오는 책임을 갖습니다. Repository 를 갖습니다.
  • Domain Layer : 앱의 비즈니스 로직을 담당합니다. UseCase, VO (Value Object), Repository Protocol 을 갖습니다.
  • Presentaion Layer : UI 로직 관련 책임을 갖습니다. MVVM 패턴을 활용했습니다.

코디네이터 패턴 (Coordinator)

화면 전환을 담당하는 객체입니다. 화면간 의존성을 줄이고 화면 이동을 할 수 있게 돕습니다. 코디네이터는 자식 코디네이터를 가질 수 있습니다. 코디네이터를 활용하면 모듈간 의존성 없이 화면 이동이 가능합니다.

Deep Link

Scheme URL 과 Coordinator 패턴을 융합하여 앱의 외부에서도 앱의 화면 상태를 쉽게 조작 할 수 있게 작업하고, 서로 다른 화면들끼리도 의존성 없이 전환 가능하도록 작업하였습니다.

ex) browse tap 에서 id 가 lion인 데이터의 상세 화면으로 이동
dgafrica://browse?screen=detail&id=lion

PreviewData

Xcode 의 Preview 기능을 수월하게 사용하기 위하여 Preview 를 꾸리기 위한 데이터셋을 모듈로 분리하여 관리.

africa's People

Contributors

donggyushin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.