markgravity / nimble-survey

2 stars 0 forks source link

Implementation and architecture discussions #21

Open NutanNiraula opened 3 years ago

NutanNiraula commented 3 years ago

Hi, we have checked the codebase and tests from your submission, the app itself is decent and pleasant to use. Here I would like to bring up some more things to understand your decisions better.

  1. You are using many dependencies in the project, how do you decide which dependencies to pick, do you think there is adverse effect of bringing in many dependencies specially the dependencies that are opionated?

  2. If an app is too large in size and starts taking long time to compile, how do you approach in solving this issue?

  3. Its interesting to see you use MVVM with RxSwift. Is there any particular reason behind choosing this particular pattern? Have you worked with other design patterns like Clean architecture, VIP or VIPER? How do you decide which architecture to use?

  4. Is there any downside to using RxSwift that you know of? What are the advantages?

markgravity commented 3 years ago
  1. I follow these factors below:
    • Will I can make it better than using the other
    • Their number of issues & the last time they submit a commit, stars
    • How solution they provide: easy to use, good syntax, nice and elegant...
    • Fork and modify it, if it doesn't match with my purpose, and use it as a code base (try to avoid it much as much)

Don't get your mean in these words

the dependencies that are opionated

  1. My solutions:

    • Avoid using these to concat string like this: "this" + "title"
    • Define the type of variable will save a lot of time, cause the compiler doesn't have to guess the type Ex: let x = 2 -> let x: Int = 2
  2. I love the way MVVM combines with RxSwift, with combineLastest, zip, merge, denounce, throttle, BehaviorRelay, PublishSubjecy... It will help a lot to handle async tasks but need process it sync and it works like a charm in my current project of my company, we have face to a screen with very complex and it deals with it very nicely. Sadly, I only work with MVC, MVVM atm, but really excited to learn the new thing, VIPER will be my next thing.

  3. I think the downside of it, that it is the third-party framework, also increase your app size a little bit. But besides that, it helps you solve the problem with async tasks as I mention above, the best choice for MVVM, a good writing style...

NutanNiraula commented 3 years ago

Thank you for your answers, this concludes my review. Other members of the team will also take a look and help with final decision. I wish you best of luck. 🍀