Opracowałem naszą obecną architekturę projektu i zacząłem ją rozwijać samodzielnie (osiągając coś w rodzaju, revision 40
) .
Opracowujemy prostą strukturę routingu metra i mój projekt wydawał się być wykonany bardzo dobrze - kilka głównych modeli, odpowiadające widoki, główna logika i struktury danych zostały zamodelowane „tak, jak powinny” i całkowicie oddzielone od renderowania, część algorytmiczna została również zaimplementowana oprócz głównych modeli i miał niewielką liczbę punktów przecięcia.
Nazwałbym ten projekt skalowalnym, konfigurowalnym, łatwym do wdrożenia, działającym głównie w oparciu o „interakcję z czarną skrzynką” i, no cóż, bardzo fajny.
Co zostało zrobione:
- Rozpocząłem implementacje odpowiednich interfejsów, przeportowałem wygodne biblioteki i napisałem kody pośredniczące dla niektórych części aplikacji.
- Miałem dokument opisujący styl kodowania i przykłady użycia tego stylu kodowania (mój własny kod napisany).
- Zmusiłem się do użycia mniej lub bardziej nowoczesnych
C++
technik programistycznych, w tymno-delete
kodu (opakowanego za pomocą inteligentnych wskaźników) itp. - Udokumentowałem cel konkretnych implementacji interfejsu i sposób ich wykorzystania.
- Testy jednostkowe (głównie testy integracyjne, ponieważ nie było dużo „rzeczywistego” kodu) i zestaw próbnych prób dla wszystkich podstawowych abstrakcji.
Byłem nieobecny przez 12 dni .
Co mamy teraz (projekt został opracowany przez 4 innych członków zespołu):
- 3 różne style kodowania całego projektu (Chyba, dwa z nich zgodził się użyć tego samego stylu :) , samo odnosi się do nazywania naszych abstrakcji (np
CommonPathData.h
,SubwaySchemeStructures.h
) , które są w zasadzie nagłówki deklarujące niektóre struktury danych. - Absolutny brak dokumentacji dla ostatnio wdrażanych części.
- To, co mogłem ostatnio nazwać
single-purpose-abstraction
teraz, obsługuje co najmniej 2 różne typy zdarzeń, ma ścisłe połączenie z innymi częściami i tak dalej. - Połowa używanych interfejsów zawiera teraz zmienne składowe
(sic!)
. - Surowe użycie wskaźnika prawie wszędzie.
- Testy jednostkowe wyłączone, ponieważ „
(Rev.57) They are unnecessary for this project
”. - ... (to chyba nie wszystko) .
Historia Commit pokazuje, że mój projekt został zinterpretowany jako przesada i ludzie zaczęli go łączyć z osobistymi rowerami i ponownie zaimplementowanymi kołami, a następnie mieli problemy z integracją fragmentów kodu.
Teraz - projekt nadal wykonuje tylko niewielką część tego, co musi zrobić, mamy poważne problemy z integracją, zakładam, że wycieki pamięci.
Czy w tej sprawie jest coś do zrobienia?
Zdaję sobie sprawę, że wszystkie moje wysiłki nie przyniosły żadnych korzyści, ale termin jest już niedługo i musimy coś zrobić. Czy ktoś miał podobną sytuację?
Zasadniczo myślałem, że dobry (cóż, zrobiłem wszystko, co mogłem) początek projektu prawdopodobnie doprowadzi do czegoś fajnego, jednak rozumiem, że się mylę.