Problem: zaciężni maruderzy tak namieszali w aplikacji (za ciężką, kontraktorską kaskę!), że nawet po miesiącu przedzierania się z maczetą przez kod, dalej czujesz się jak małe dziecko w dużym ciemnym lesie?
- W projekcie (a był to .NET) mieliśmy do czynienia z dziesiątkami Solutions (Hej zakochani w eclipsie – solution to coś w stylu workspace) i jeszcze większą liczbą projektów. Nikt, nawet Nostradamus nie wiedział jak rozłożone są zależności między nimi. Jak trzeba było coś zakodować to średnio za trzecim razem otwierałeś w MS Dev Studio “właściwe” Solution, czyli to, które zawierało projekty, które miały kod, który Cię interesował.
- Solutions miały paskudną właściwość dzielenia pewnych projektów między sobą. Niby niewinne, w praktyce uniemożliwia poważniejszy refaktoring: zmień cokolwiek publicznego, a sąsiednie Solution może się skompiluje. Może.
- A teraz najlepsze: zależności między projektami były niekiedy binarne (potrzebuje DLLki), innym razem “projektowe” (potrzebuje referencji do projektu). WTF?
Ułatwmy sobie życie obrazkami! Kolega Nick, zasugerował, żeby użyć Graphviza:
1. Bardzo łatwo napisać skrypt, który zaglądnie do plików sln, przejrzy pliki proj i proszę bardzo: NHibernate od kuchni (tylko zależności projektowe):
2. Trochę za dużo tego, nich skrypt zajrzy tylko do wybranych projektów i niech pokaże zależności binarne:
3. A teraz fajniejsza aplikacja: CCNet. Znacznie prostsza od NHibernate, brak nadmiarowych Solutions, niewiele projektów no i przede wszystkim: Solutions NIE dzielą między sobą projektów:
Coś w tym jest, że aplikacje dotnetowe sprzyjają nadprodukcji Solutions i Projects. Dodaj 10 programistów, 1 rok czasu i proszę bardzo przepis na chaos. Graphviz to bardzo przyjemne narządko, żeby się z tym chaosem zmierzyć (i zrefaktorować bestię).