Νομίζω πως το πιο ενδιαφέρον και το πιο άμεσα εφαρμόσιμο είναι το hybrid approach που αναφέρει στο τέλος. Γιατί συνδυάζει τα καλά και των δύο τεχνικών.Jami wrote:Πριν λιγο καιρο που ειχα παει στο Java Day ειχε μια ομιλια περι ενος διαφορετικου τροπου οργανωσης των πακετων σε ενα project.
Αυτο που μας ειχαν δειξει στη σχολη και εκανα και εγω ειναι να οργανωνω τα πακετα by layer, δηλαδη να εχω σε ενα φακελο μαζεμενα ολο το domain, σε εναν αλλο το gui, σε εναν αλλο τα dao, ολους τους controllers κοκ (+ με subfolders εντος αυτων για ιεραρχια).
Αυτος ομως ο τροπος εχει ενα προβλημα. Αν χρειαστει να αλλαξω κατι πχ στο billing θα πρεπει να πηγαινω σε καθε φακελο απο αυτους και να βρισκω αυτους που αφορουν το billing και να κανω αλλαγες. Και ολα αυτα αντε να γινουν και γρηγορα αν το project ειναι δικο μου, φανταστειτε σε project χιλιαδων γραμμων τι γινεται.
Αυτο που προτεινε ο ομιλητης εκει ηταν η οργανωση των πακετων by feature και νομιζω οτι με κερδισε.
Η ιδεα ειναι να μαζευεις σε καθε φακελο ολα τα αρχεια που σχετιζονται με καθε ξεχωριστη λειτουργια/υπηρεσια/χαρακτηριστικο της εφαρμογης. Δηλαδη αν το project εχει μια λειτουργια billing, να εχεις εναν φακελο ονοματι billing και μεσα του οτιδηποτε σχετιζεται με αυτη την λειτουργια. Και μιλωντας πρακτικα για Java μπορεις να κανεις τις κλασεις σου να εχουν scope μονο εντος φακελου (default scope οταν δεν βαζεις εναν εκ των public, private, protected), οποτε εχεις μια σιγουρια οτι δεν μπορεις να κανεις ζημια με τις αλλαγες σου καπου αλλου στο project. Επισης αν θες να αλλαξεις κατι σε αυτη την λειτουργια ξερεις οτι, ο,τι χρειαστεις θα το βρεις εκει περα.
Και απαξ και ενσωματωσεις αυτο το μοντελο, μπορεις μετα απο κατω να εχεις κανονικα το by layer σου ιεραρχια, εχοντας ουσιαστικα μια hybrid προσεγγιση. Αλλα το κερδος ειναι οτι βρισκεις σε γραμμικο χρονο τα αρχεια που πρεπει να κανεις αλλαγες, που σιγουρα θα χρειαστει πολλες φορες να κανεις.
Εγω για δοκιμη, ενσωματωσα αυτη την λογικη στο project μας στην ΑΕΠΣ του Κωτιδη και εχω να πω οτι βοηθαει απιστευτα, ειδικα για project που ξεφευγουν σε γραμμες κωδικα. Τι λετε εσεις, θα το δοκιμαζατε?
Το pdf της παρουσιασης
Δηλαδή εγώ θέλω να έχω ένα package GUI/VIEW αλλά να το έχω έτσι χύμα δεν πολυβοηθάει αλλα είναι καλύτερα να χωρίσεις ξεχωριστά τα views ανάλογα με λειτουργία, τους handlers κλπκλπ.