
Όταν spliting μια λύση στη λογική στρώματα, όταν είναι καλύτερο να χρησιμοποιήσετε ένα ξεχωριστό έργο πάνω ακριβώς ομαδοποίηση από ένα φάκελο;

 
Φακέλους ή έργα σε Visual Studio λύση;
======================================



Από προεπιλογή, **πάντα απλά να δημιουργήσετε νέο φάκελο** μέσα στο ίδιο έργο


* Θα πάρετε μόνο τη συναρμολόγηση (χωρίς επιπλέον γυμναστικής ILMerge)
* Είναι πιο εύκολο να θολώνω (επειδή θα έχετε λιγότερες δημόσιες τύπους και μεθόδους, ιδανικά καθόλου)


Ο διαχωρισμός πηγαίο κώδικα σας σε πολλά έργα νόημα μόνο εάν ...


* Έχετε κάποια τμήματα του πηγαίου κώδικα που αποτελούν μέρος του προγράμματος, αλλά όχι να αναπτυχθούν από προεπιλογή ή σε όλα (δοκιμές μονάδα, επιπλέον plugins κλπ)
* Περισσότερα προγραμματιστές που εμπλέκονται και θέλετε να αντιμετωπίζουν την εργασία τους ως αναλώσιμο μαύρο κουτί. (Όχι πολύ συνιστάται)
* Εάν μπορείτε να διαχωρίζονται σαφώς το έργο σας σε απομονώνονται στρώματα / ενότητες και θέλετε να βεβαιωθείτε ότι δεν μπορούν cross-καταναλώνουν **εσωτερικά** μέλη. (επίσης δεν συνιστάται, διότι θα πρέπει να αποφασίσει ποια πλευρά είναι το πιο σημαντικό)


Αν νομίζετε ότι κάποια τμήματα του πηγαίου κώδικα σας θα μπορούσε να είναι επαναχρησιμοποιήσιμα, ακόμα δεν το δημιουργήσετε ένα νέο έργο. Απλά περιμένετε έως ότου θα θέλετε πραγματικά να το χρησιμοποιήσετε ξανά σε μια άλλη λύση και να απομονώσουν έξω από αρχικό σχέδιο, όπως απαιτείται. Ο προγραμματισμός δεν είναι ένα lego, επαναχρησιμοποίηση είναι συνήθως πολύ δύσκολη και συχνά δεν θα συμβεί όπως έχει προγραμματιστεί.

 

Συνήθως κάνω ένα έργο για το GUI ενός σχεδίου για την επιχειρηματική λογική ένα σχέδιο για την πρόσβαση σε δεδομένα και ένα σχέδιο για τις δοκιμές μονάδα.


Αλλά μερικές φορές είναι φρόνιμο να έχουμε διαχωρισμό με βάση τις υπηρεσίες (αν χρησιμοποιείτε μια αρχιτεκτονική προσανατολισμένη υπηρεσία) Όπως ταυτότητας, πωλήσεις, κλπ 


Υποθέτω ότι ο κανόνας του αντίχειρα που λειτουργούν εκτός της είναι ότι εάν μπορείτε να το δείτε ως ένα συστατικό που έχει ένα σαφή διαχωρισμό των ανησυχιών, στη συνέχεια, ένα διαφορετικό σχέδιο θα μπορούσε να είναι συνετή. Αλλά θα ήθελα να πιστεύω ότι οι φάκελοι σε σχέση με τα σχέδια θα μπορούσε να είναι απλώς μια προτίμηση ή τη φιλοσοφία.


Προσωπικά, πιστεύω ότι αν επαναχρησιμοποιήσιμο κώδικα χωρίζεται σε έργα που είναι απλούστερο να χρησιμοποιήσει άλλους χώρους από ό, τι αν είναι μόνο σε φακέλους.

 

Denny έγραψε:



> 
> Προσωπικά, πιστεύω ότι αν επαναχρησιμοποιήσιμο κώδικα χωρίζεται σε έργα που είναι απλούστερο να χρησιμοποιήσει άλλους χώρους από ό, τι αν είναι μόνο σε φακέλους.
> 
> 
> 


Πραγματικά συμφωνώ με αυτό - αν μπορείτε να το χρησιμοποιήσετε ξανά, θα πρέπει να είναι σε ένα ξεχωριστό έργο. Με αυτόν εν λόγω, είναι επίσης πολύ δύσκολο να επαναχρησιμοποιηθούν αποτελεσματικά :)


Εδώ στο SO, έχουμε προσπαθήσει να είναι πολύ απλή με τρία έργα:


* έργο Web MVC (που κάνει μια ωραία δουλειά διαχωρισμού στρωμάτων σας σε φακέλους από προεπιλογή)
* έργο βάσης δεδομένων για τον έλεγχο πηγή DB μας
* δοκιμές Μονάδα κατά της MVC μοντέλα / ελεγκτών


Δεν μπορώ να μιλήσω για όλους, αλλά είμαι χαρούμενος με το πώς απλά το έχουμε διατηρούνται - πραγματικά επιταχύνει το χτίζει μαζί!

 


> 
> Ο διαχωρισμός πηγαίο κώδικα σας σε πολλά έργα νόημα μόνο εάν ... ... Περισσότερα προγραμματιστές που εμπλέκονται και θέλετε να αντιμετωπίζουν την εργασία τους ως αναλώσιμο μαύρο κουτί. (Δεν είναι πολύ συνιστάται) ...
> 
> 
> 


Γιατί δεν είναι αυτό συνιστάται; Έχω βρει μια πολύ χρήσιμος τρόπος για να διαχειριστεί μια εφαρμογή με πολλά προγραμματιστές εργάζονται σε διαφορετικά τμήματα. Κάνει checkins πολύ πιο εύκολο, κυρίως από σχεδόν εξαλείφοντας συγχωνεύσεις. Πολύ σπάνια θα πρέπει να εργαστούν για το ίδιο έργο ταυτόχρονα δύο προγραμματιστές.

 

Ο διαχωρισμός χαρακτηριστικά σε έργα είναι συχνά μια βελτιστοποίηση αρχιτεκτονική YAGNI. Πόσο συχνά έχετε επαναχρησιμοποιηθούν αυτά τα ξεχωριστά έργα, πραγματικά; Αν δεν είναι συχνό φαινόμενο, είστε περιπλέκοντας την ανάπτυξη σας, την κατασκευή, εγκατάσταση και συντήρηση για τη θεωρητική επαναχρησιμοποίηση.


Προτιμώ πολύ το διαχωρισμό σε φακέλους (με τη χρήση κατάλληλων ονομάτων) και refactoring να διαχωρίσει τα έργα, όταν έχετε μια περίπτωση χρήσης επαναχρησιμοποίηση της πραγματικής ζωής.

 

Εάν πηγαίνετε για τη δημιουργία πολλών έργων, βεβαιωθείτε ότι ο καθένας που προσθέτει κώδικα στη λύση έχει πλήρη επίγνωση της πρόθεσης τους και να κάνουμε ό, τι μπορούμε για να τους πάρει για να κατανοήσουν τις εξαρτήσεις μεταξύ των έργων. Εάν έχετε δοκιμάσει ποτέ να λύσουμε το χάος, όταν κάποιος έχει πάει και πρόσθεσε αναφορές που δεν θα έπρεπε να ήταν εκεί και πήρε μακριά με αυτό για εβδομάδες, θα καταλάβετε αυτό το σημείο

 

Πραγματικά πιστεύω ότι είναι καλύτερα να χωρίσετε το έργο, καθώς, αλλά όλα εξαρτώνται από το μέγεθος του έργου και ο αριθμός των ανθρώπων που εργάζονται σε αυτό. 


Για τα μεγάλα έργα, έχω σχέδια για 


* πρόσβαση σε δεδομένα (μοντέλα)
* Υπηρεσίες
* front-end
* δοκιμές


Πήρα το μοντέλο από Rob Connery και την εφαρμογή βιτρίνα του ... φαίνεται να λειτουργεί πολύ καλά. 


[MVC-βιτρίνα](http://wekeroad.com/categories/mvc-storefront)

 