Foldery czy projekty w rozwiązaniu Visual Studio?

Kiedy podczas dzielenia rozwiązania na warstwy logiczne najlepiej jest użyć oddzielnego projektu zamiast grupowania po folderze?

Author: Mark Cidade, 2008-08-05

7 answers

Domyślnie, zawsze utwórz nowy folder w ramach tego samego projektu

  • otrzymasz pojedynczy montaż (bez dodatkowego ILMerge gymnastic)
  • łatwiej zaciemniać (ponieważ będziesz miał mniej publicznych typów i metod, najlepiej żadnych)

Rozdzielenie kodu źródłowego na wiele projektów ma sens tylko wtedy, gdy ty...

  • mieć pewne części kodu źródłowego, które są częścią projektu, ale nie można go wdrożyć domyślnie lub w ogóle (Jednostka testy, dodatkowe pluginy itp.)
  • więcej programistów zaangażowanych i chcecie traktować ich pracę jako czarną skrzynkę eksploatacyjną. (niezbyt zalecane)
  • Jeśli możesz wyraźnie rozdzielić swój projekt na izolowane warstwy/moduły i chcesz mieć pewność, że nie będą one mogły krzyżować członków wewnętrznych. (również nie zaleca się, ponieważ będziesz musiał zdecydować, który aspekt jest najważniejszy)

Jeśli uważasz, że niektóre fragmenty kodu źródłowego mogą być wielokrotnego użytku, nadal nie utwórz go jako nowy projekt. Po prostu poczekaj, aż naprawdę będziesz chciał użyć go ponownie w innym rozwiązaniu i odizoluj go od oryginalnego projektu w razie potrzeby. Programowanie nie jest LEGO, ponowne użycie jest zwykle bardzo trudne i często nie nastąpi zgodnie z planem.

 17
Author: lubos hasko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-04 22:54:47

Rozdzielenie funkcji na projekty jest często optymalizacją architektury YAGNI. Jak często wykorzystywałeś te oddzielne projekty? Jeśli nie jest to częste zjawisko, komplikujesz rozwój, tworzenie, wdrażanie i konserwację w celu teoretycznego ponownego użycia.

Zdecydowanie wolę rozdzielenie na foldery (używając odpowiednich przestrzeni nazw) i refaktoryzację w celu oddzielenia projektów, gdy masz rzeczywisty przypadek ponownego użycia.

 8
Author: Jon Galloway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 17:35:22

Denny napisał (a):

Osobiście uważam, że jeśli kod wielokrotnego użytku jest podzielony na projekty, łatwiej jest użyć innych miejsc, niż jeśli jest tylko w folderach.

Naprawdę się z tym Zgadzam-jeśli można go ponownie wykorzystać, powinien być w osobnym projekcie. Z tym, że jest to również bardzo trudne do efektywnego wykorzystania:)

TUTAJ W SO, staraliśmy się być bardzo proste z trzech projektów:

  • MVC Web project (który dobrze radzi sobie z rozdzielaniem warstw na foldery domyślnie)
  • projekt bazy danych do kontroli źródła naszego DB
  • testy jednostkowe na modele/Kontrolery MVC

Nie mogę mówić za wszystkich, ale jestem zadowolony z tego, jak proste zostało to zachowane - naprawdę przyspiesza Kompilacje wzdłuż!

 6
Author: Jarrod Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-04 22:42:55

Zazwyczaj robię projekt dla GUI projekt dla logiki biznesowej projekt dla dostępu do danych i projekt dla testów jednostkowych.

Ale czasami rozsądne jest oddzielenie od usług (jeśli używasz architektury zorientowanej na usługi), takich jak uwierzytelnianie, sprzedaż itp.

Domyślam się, że zasada, z której pracuję, jest taka, że jeśli postrzegasz go jako komponent, który ma wyraźny rozdział obaw, to rozważny może być inny projekt. Ale myślę, że że foldery kontra projekty mogą być tylko preferencjami lub filozofią.

Osobiście uważam, że jeśli kod wielokrotnego użytku jest podzielony na projekty, łatwiej jest użyć innych miejsc, niż jeśli jest tylko w folderach.

 4
Author: denny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-04 22:14:17

Dzielenie kodu źródłowego na wiele projektów ma sens tylko wtedy, gdy ty... ... Więcej deweloperów zaangażowanych i chcesz traktować ich pracę jako czarna skrzynka z materiałów eksploatacyjnych. (niezbyt zalecane)...

Dlaczego nie jest to zalecane? Uważam, że jest to bardzo przydatny sposób zarządzania aplikacją z kilkoma programistami pracującymi nad różnymi częściami. Sprawia, że checkins znacznie łatwiejsze, głównie przez praktycznie wyeliminowanie łączenia. Bardzo rzadko dwóch programistów będzie musiało pracować nad tym samym projekt w tym samym czasie.
 0
Author: rjrapson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-17 17:19:51

Jeśli zdecydujesz się na tworzenie kilku projektów, upewnij się, że każdy, kto dodaje kod do rozwiązania, jest w pełni świadomy ich intencji i zrób wszystko, aby zrozumieć zależności między projektami. Jeśli kiedykolwiek próbowałeś uporządkować bałagan, gdy ktoś odszedł i dodał referencje, których nie powinno tam być i uszło to na sucho przez tygodnie, zrozumiesz ten punkt

 0
Author: Oskar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-10 21:36:06

Naprawdę myślę, że lepiej jest podzielić projekt, ale wszystko zależy od wielkości projektu i liczby osób pracujących nad nim.

Dla większych projektów mam projekty dla

    Dostęp do danych (modele)
  • usługi
  • front end
  • testy

Mam model od Roba Connery ' ego i jego aplikacji sklepowej... wygląda na to, że działa naprawdę dobrze.

Mvc-storefront

 0
Author: user10479,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-27 12:12:23