Programuję od kilku lat i z czasem bardzo dobrze poznałem C # i JavaScript. Mam kilka większych projektów w języku C # i JavaScript, do których nie mam problemów z nawigacją. Niedawno rozpocząłem projekt PHP i AngularJS do pracy bez wcześniejszego doświadczenia z PHP.
Strumień strony PHP staje się trudny do śledzenia (strona JavaScript jest większa, ale łatwa do opanowania), kiedy próbuję to przemyśleć, wyobrażam sobie splątaną kulkę wątku. Główne błędy projektowe, które popełniłem, kiedy zaczynałem, zaczynają się gromadzić i wpływać na mój projekt. Zaimplementowanie czegoś nowego zajmuje coraz więcej czasu.
Mam napięty termin i coraz trudniej jest mi pisać dobry, SUCHY, SOLIDNY kod. Coraz bardziej zachęcające jest kopiowanie / wklejanie fragmentów kodu, aby wprowadzić niewielkie zmiany w jego zachowaniu w miarę upływu czasu projektowania. Powrót do bazy kodu zajmuje dużo czasu, gdy muszę zmienić kontekst (z jednego projektu na ten z powrotem), mam wrażenie przerażenia, gdy wracam do pracy nad tym projektem.
Jakie kroki mogę podjąć, aby temu zaradzić? Dodatkowy czas, jaki może to zająć, również musi być uzasadniony, mój szef nie jest programistą i nie jest zaznajomiony z cyklami rozwojowymi ani programowymi, więc wyjaśnienie może być trudniejsze niż zwykle.
źródło
Odpowiedzi:
Bierzesz na siebie dług techniczny. Im bardziej usprawiedliwisz niedbały kod terminami, tym więcej terminów będzie oznaczało, że osiągasz coraz mniej.
Zrozum, że możesz całkowicie tego uniknąć. Nikt cię nie złapie, robiąc bałagan i wyrzucając cię z równowagi. Po prostu obudzisz się pewnego dnia otoczony bałaganem.
W tym momencie albo zaktualizujesz swoje CV i sprawisz, że będzie to dla mnie problemem, albo zdecydujesz się spłacić dług i poświęcić trochę czasu na czyszczenie kodu.
Jeśli pójdziesz do czyszczenia, zrozum, że nie chodzi o „poświęcanie więcej czasu na projektowanie”. Chodzi o zerwanie z leniwymi nawykami i wyjęcie śmieci.
Wyrzucanie hurtowego brudnego kodu to zły pomysł. Nie z powodu włożonej w to pracy, ale dlatego, że działający kod przechwytuje pomysł. Przenieś pomysł do czystego kodu, zanim usuniesz brudny kod.
Pomagają w tym testy jednostkowe, ale jeśli stworzyłeś testy z taką samą starannością, jaką wkładasz w bałagan, prawdopodobnie również potrzebują naprawy.
Nie poddawaj się sztywności. Jeśli nie możesz tego zmienić, to nie jest to oprogramowanie.
źródło
To jest twoje uzasadnienie. „zejdź na dół, zjedz trochę kruków i wyjaśnij, dlaczego wszystko trwa dłużej i że musisz poświęcić trochę czasu na przebudowę i przeprojektowanie systemu.
Jeśli tego nie zrobisz, musisz stopniowo refaktoryzować, na najniższym poziomie. Zadania już trwają dłużej, niż chcesz - poświęć trochę czasu za każdym razem, gdy dotkniesz podstawy kodu, aby spróbować coś ulepszyć. Dodaj test integracji. Wyodrębnij abstrakcję.
Głupia odpowiedź na pytanie „Jak refaktoryzować ogromny projekt?” to „Jeden kawałek na raz”.
EDYTOWAĆ
Czytałem powiązane posty i natknąłem się na ten post na blogu: http://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog/ . TLDR : nie próbuj tworzyć ogromnej „fazy” refaktora w swoim projekcie; jest mało prawdopodobne, aby uzyskał wpis od właścicieli projektów, a Ty nie będziesz mieć wyboru w kwestii tego, co masz rozwiązać w tym czasie. Zamiast tego poświęć trochę czasu na każdą nową zmianę lub poprawkę, aby usunąć zepsuty kod, nad którym obecnie pracujesz. Nie pozwól, aby zapachy pozostały wokół, gdy masz okazję je naprawić.
źródło
Sonarqube obsługuje PHP, dzięki czemu możesz pomóc w śledzeniu obecnego zadłużenia i nowych wycieków. http://docs.sonarqube.org/display/PLUG/PHP+Plugin
Próbka na żywo z Drupal https://sonarqube.com/dashboard?id=drupal
źródło