hariskap Δημοσ. 20 Ιουνίου 2018 Δημοσ. 20 Ιουνίου 2018 Τι design pattern χρησιμοποιείτε για τις iOS εφαρμογές σας MVVM, VIPER, MVC; Κάποια άλλη; και γιατί; Τι pro ή cons πιστεύετε ότι έχει η επιλογή σας;
Επισκέπτης Δημοσ. 28 Ιουνίου 2018 Δημοσ. 28 Ιουνίου 2018 Tα MVP και MVVM είναι παραλλαγές του παλιού MVC. Στο MVP ο Controller αντικαθιστάται απο τον Presenter και στο MVVM απο το View-Model αλλά και τα δύο είναι πιο περίπλοκα απο το MVC. Tο VIPER επίσης βασίζεται στο MVC : o Controller εχει αντικατασταθεί απο τον Interactor και Presenter, το View παραμένει το ίδιο και το Model έχει μετονομαστεί σε Entity. O Router δέν ειναι κάτι καινούργιο γιατί δημιουργείται έμεσσα ή άμεσα στο MVC. Το VIPER είναι το πιό περίπλοκο απο όλα. Σχετικά με το ερώτημα ποιο είναι το καλύτερο θα έλεγα ότι εξαρτάται απο το τί θές να φτιάξεις.. To Viper είναι το απόλυτο "separation of concern" και είναι ευκολότερο να διορθώσεις bugs και να κάνεις testing υπο προυποθέσεις. Ωστόσο είναι καταλληλότερο για μεγάλα projects με σταθερα requirements/specifications και μεγάλο lifetime. Για μικρότερα project το MVC και οι παραλλαγές του είναι σαφως καλύτερα. Τα μειονεκτήματα του MVC είναι ο Controller είναι tightly coupled με το View και όταν αλλάξει κάτι στο View πρέπει να γίνει και η αντίστοιχη αλλαγή στo Controller. Ο Controller είναι δυσκολοτερος στο testing και συχνά γεμίζει με πολύ κώδικα! Αντίστοιχα στο MVP ο Presenter όπως ο Controller συλλέγει στην πορεία επιπλέον business logic και στο τέλος καταλήγεις με μεγάλους Presenters που είναι δύσκολο να σπάσεις μεταξύ τους. Στο MVVM εχεις two-way binding των views με το data (variables και expressions) με αποτέλεσμα όταν βάζεις επιπλέον κώδικα στο XML σου να προσθέτεις περιττό presentation logic. Σε καμιά περίπτωση δέν είναι καταλληλο για απλά UI. Επίσης επειδή έχουμε περίπλοκα data bindings το debugging είναι πολύ δύσκολο. Συνοψιζοντας όλα τα design patterns έχουν +/- ξεκινώντας απο το πιο απλό στο πιό περίπλοκο με αντιστοιχία μικρού προς πιο μεγάλο projects θα τα έβαζα ώς εξής: MVC -> MVP -> MVVM -> VIPER
hariskap Δημοσ. 28 Ιουνίου 2018 Μέλος Δημοσ. 28 Ιουνίου 2018 Xρησιμοποιώ MVVM προς το παρον. Και νιώθω ότι έχει αρχήσει και γίνεται πιο περίπλοκο από ότι περίμενα. Ήθελα να δώ τι χρησιμοποιείται στη κοινότητα. σκεφτόμουν να δοκιμάσω VIPER αλλα δεν ξέρω κατά πόσο θα αξίζει να το κάνω refactor σε VIPER. Έχεις να προτείνεις κανένα template generator για Viper. Το project στην συγκεκριμένη φάση είναι μεσαίου μεγέθους, αλλά έχει προοπτικές να εξελιχθεί σε μεγαλύτερο προς το παρον έχει καμιά 20αριά view controllers αρκετά service calls etc.
theo_ks Δημοσ. 17 Ιουλίου 2018 Δημοσ. 17 Ιουλίου 2018 MVVM χρησιμοποιώ κι εγώ με RxSwift. Το MVC αν το δουλεψεις καλά δεν θα έχεις θεμα αλλά το MVVM σου έχει ένα έτοιμο mental model για τα βασικά και δεν παιδεύεσαι να βρεις που να βάλεις μερικά πράγματα. Το VIPER δεν το έχω δουλέψει. Από συζητήσεις με άλλους devs οι απόψεις διίστανται ως προς το αν τα προβλήματα που λύνει είναι περισσότερα από αυτά που δημιουργεί.
hariskap Δημοσ. 18 Ιουλίου 2018 Μέλος Δημοσ. 18 Ιουλίου 2018 Έχω μια απορία πως μεταφέρεις models μεταξύ view controllers που δεν έχουν κοντινή επαφή; χρησιμοποιείς singletons? (δεν είμαι fun τους)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα