ściami projektu...

Linki


» Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.
»
Rozdział 40Podczas śniadania głównym tematem rozmów była Brazylia i wszyscy starali się patrzeć z jak najlepszej strony na projekt Angela związany z...
»
Ulam i von Neumann pracowali w Los Alamos National Laboratory, gdzie prowadzono badania nad bombą atomową w ramach projektu Manhattan...
»
cia, bo miał specjalne uzdolnienia w tym kierunku, takie jak moja umiejętność projek- jakiego byłem zdolny, musiałoby zakończyć się roztrzaskaniem...
»
trochę zapasów na Księżycu, w dawnych bazach Floty, urny i projekcjami holograficznymi zmarłych...
»
Mimo tych problemów oraz mimo braku zgodności między własno­ściami cząstek przewidywanych w teoriach supergrawitacji a własnościami cząstek...
»
304GATUNKI WYPOWIEDZI w ANALIZIE STYLISTYCZNEJkad recenzje projektw badawczych...
»
 PROJEKT OBWODU I...
»
[por
»
Jaki był rezultat? Nie było ani jednego protestu, ponieważ kinematografy w Stanach Zjednoczonych nie wyświetlają już wcale tego rodzaju obrazów”...
»
5

Dzieci to nie książeczki do kolorowania. Nie da się wypełnić ich naszymi ulubionymi kolorami.

Co prawda będą musieli może nawet kilkakrotnie reagować na zmiany w interfejsie naszego systemu, ale korzyść ze zrównoleglenia prac, a zwłaszcza postępy współpracowników w rozwijaniu implementacji wewnętrznych elementów ich podsystemów, niemających związku z naszym kawałkiem projektu, mogą zre-kompensować koszty zmian interfejsu. Dodatkowe zalety tego podejścia ujawnią się w następnym przykładzie.
Fasada dla przeróbek
Pora na kolejne zastosowanie wzorca Façade, pozornie dość podobne do fasady dla systemów w budowie. Otóż kiedy znajdziemy się w potrzebie „refaktoryzacji” całego podsystemu, w naszym projekcie powinniśmy rozważyć zastosowanie fasady refaktoryzacji jako środka oddzielenia „dobrego” kodu, który ma pozostać niezmieniony, od „złego” kodu, który ma być przerobiony. Typowo w czasie przerabiania systemu dochodzi do wprowadzania licznych zmian w interfejsach różnych klas, co potencjalnie wymusza znaczące zmiany w interfejsie systemu jako całości.
Wyobraźmy sobie, że dostaliśmy w spadku po poprzednikach dość przestarzały system efektów cząsteczkowych i stoimy przed zadaniem przerobienia go i uruchomienia tak, aby współdziałał z licznymi, znacznie nowszymi systemami gry. Zastany system może nie posiadać elementów i funkcji oczekiwanych w nowym środowisku albo po prostu nie spełniać wszystkich wymagań narzucanych przez projekt gry. Trzeba więc przepisać („refaktoryzować”, kiedy rozmawia się z szefem) liczne klasy w zastanym systemie, dodać do niego nowe klasy i pozbyć się niektórych niepotrzebnych. Oczywiście całe otoczenie podsystemu natychmiast przestanie działać, przez co koledzy rozwijający inne podsystemy, uzależnione od systemu efektów cząsteczkowych, zostaną zatrzymani w swoich pracach. Mamy wtedy dwie opcje.
190
Część II ♦ Wydobywanie mocy C++
Pierwsza to dłubanina i orka w zastanym systemie, która czasowo całkowicie blokuje jakiekolwiek korzystanie z efektów cząsteczkowych w grze. Wynikły z tego przestój w rozwoju projektu może dotyczyć niemal każdego programisty w zespole, od programistów podsystemu graficznego, którzy muszą mieć na oku inwentarz cząsteczkowy, przez artystów, którzy chcieliby móc testować różne nowe tekstury, po projektantów poziomów, którzy chcieliby, żeby ich dzieła działały. Nawet jeśli z początku wydaje się, że uda się przerobić system dość szybko, zawsze jest ryzyko nieprzewi-dzianych trudności i opóźnień w przywróceniu kodu do stanu używalności. Czasem najgorsze, co się może przytrafić projektowi, to właśnie wzięcie działającego podsystemu, który kierownictwo i wydawca uznali za działający, i zablokowanie dostępu do niego. Z punktu widzenia osób niezaangażowanych w projekt konieczność przerobienia podsystemu oznacza nie postęp, ale regres całego projektu. Dla kontynuacji projektu najlepiej jest, jeśli w każdym momencie można „czynnikom decyzyjnym”
pokazać możliwie dużo działającego kodu i możliwie wiele chociaż jako tako spraw-nych podsystemów.
Weźmy więc pod rozwagę drugą możliwość: ustanowienie wzorca Façade jako tymczasowego interfejsu, który udostępniałby zarówno nowe funkcje i elementy podsystemu, jak i te, które zostaną pozostawione ze starego. Zazwyczaj wiadomo już, jakie cechy ma reprezentować nowy system (od czego są regularne konsultacje z projek-tantami?), więc ów tymczasowy interfejs, fasada dla przeróbek napisze się właściwie sama. Następny krok będzie polegał na zastosowaniu fasady jako otoczki dla zacho-wywanych funkcji przerabianego podsystemu. Pozwoli to podtrzymać dostępność za-chowywanych elementów na czas, kiedy system będzie przerabiany. A wszystkie nowe funkcje i elementy również powinny być udostępniane poprzez tymczasową fasadę.
Po wdrożeniu fasady dla przeróbek (co nie powinno zająć dużo czasu) można już swobodnie kontynuować prace nad „wnętrznościami” nowego systemu, a wszyscy inni będą mogli cieszyć się niezakłóconą dostępnością tak im potrzebnych cząsteczek.
Do czasu dokończenia systemu okaże się zapewne, że fasada zamieniła się w solidnego menedżera systemu efektów cząsteczkowych (to prawdopodobne zwłaszcza wtedy, kiedy już na początku miało się takie plany). Ale nawet jeśli nie, można szybko zwalić fasadę i odsłonić światu kompletny, nowy interfejs systemu; wymuszony tym przestój nie powinien być dłuższy niż kilka godzin.
Wzorzec Observer

Powered by MyScript