środa, 29 czerwca 2011

modyfikowanie aplikacji popełnionej przez kogoś innego

Wcześniej czy później każdy z nas musi zmienić lub poprawić coś co napisał lub zrobił ktoś inny. Jeśli nasz poprzednik jest specjalistą w swojej dziedzinie wprowadzanie zmian lub poprawek jest samą przyjemnością. Gorzej jeśli trzeba wziąć się za pracę amatora lub, co gorsza, osoby o niskich kwalifikacjach i wysokiej samoocenie co w połączeniu z totalnym brakiem autokrytycyzmu tworzy to, z czym mam obecnie do czynienia.

Aplikacyjka ma w sumie prostą funkcjonalność. Marketing wpisuje adres url strony, oczekiwany page rank, href, który powinien znaleźć się na stronie i kilka innych. Ja miałam za zadanie dodać możliwość dodawania kategorii (żeby wyniki dało się grupować według kategorii) oraz odczytywanie rel z szukanego linka.

Aplikacja składa się z prawie 300-linijkowego pliku index.php, który robi za model, viewer i controller w jednym... Dodatkowo jest zrobiony plik tylko dla crontaba. O ile index.php korzysta z klasy do nawiązywania połączenia z db i zadawania do niej pytań, o tyle plik dla crona... tworzy połączenie samodzielnie. W pliku index.php (w cronowym też) roi się od napisanych z palca i potraktowanych sprintf() zapytań. To do czego służy w takim bądź razie pg_prepare() ??

Mam tam osobny katalog "templates" pełen plików php... poza jednym... Jest to template głównej strony zrobiony w PHPTAL... Po kiego grzyba dołączać całą bibliotekę, żeby zrobić w niej JEDEN plik? Nie wiem. Mój szef też nie wiedział. Twórcę tej aplikacji określił jako sprytny ale bez doświadczenia...

W ramach wprowadzania poprawek uzupełniłam klasę do kontaktów z bazą danych o metodę prywatną zwracającą identyfikator połączenia z bazą danych i podaję ten identyfikator za każdym razem, gdy zadawane jest pytanie bazy danych, żeby nie korzystać z ostatnio nawiązanego połączenia (które niekoniecznie musi być moje). Dodatkowo dodałam metodę sprawdzającą czy dane zapytanie było już przygotowane. No i w przeciwieństwie do całej aplikacji zamiast wyciągać ze źródła różne elementy htmla za pomocą wyrażeń regularnych korzystam z klasy DOMDocument()...

Aplikacja działa, jak trzeba, ale bałam się dotykać do niektórych części, bo mimo dużego wysiłku nie udało mi się zrozumieć jak i dlaczego działa...

Co więcej ilość zagnieżdżonych ifów wskazuje, ze twórca miał problem z rekurencją...

Ogólnie taką aplikację polecam jako antywzorzec :)

Brak komentarzy:

Prześlij komentarz