za pomocą kontroli wersji
SVN jest bardzo powszechny, ale rtęć jest bardziej przystojny, potężny i ma solidne wsparcie GUI.
testowanie rozwoju
cóż, jeśli przeprowadzasz testy jednostkowe, jesteś już po stronie zwycięskiej. w przypadku narzędzi to kwestia wyboru. testowanie musi być tak proste, jak to możliwe, dlatego zrezygnowałem z PHPUnit dla SimpleTest.
kod debugowania
z testami jednostkowymi prawie nie potrzebujesz xdebug. xdebug używam zwykle tylko do profilowania. (sprawdź KCachegrind btw)
stosowanie diagramów UML
największym problemem ze wszystkim, co odzwierciedla logikę kodu, jest to, że synchronizacja wymaga dużo pracy ręcznej. możesz zautomatyzować niektóre zadania, ale to nie jest tak przydatne, ponieważ zwykle chcesz użyć uml, zanim coś zrobisz. Innym problemem jest to, że narzędzia do tworzenia diagramów są znacznie trudniejsze w użyciu niż długopis, papier lub tablica. użyj uml, jeśli musisz komunikować problem z wieloma programistami lub jeśli potrzebujesz abstrakcji dla siebie. („dia” to fajne darmowe narzędzie. również narzędzia do mapowania umysłu są bardzo przydatne do burzy mózgów, niektóre mogą faktycznie konkurować z długopisem i papierem.)
użycie OOP do konserwacji kodu wielokrotnego użytku
cóż, do pewnego stopnia działa. :) jedna dobra rada: kompozycja> dziedziczenie. Dziedziczenie jest potężnym narzędziem do ponownego użycia na pierwszy rzut oka, ale cierpi za to konserwacja i luźne połączenie. druga dobra rada: konserwacja> ponowne użycie. abstrakcyjny system może być bardzo potężny, ale także trudny w utrzymaniu.
wykorzystanie frameworków (takich jak Zend Framework dla php) do szybkiego tworzenia aplikacji
RAD jest dobrą rzeczą, aby wcześnie udostępnić aplikację. ale niektóre elementy - zwłaszcza ORM - będą strzelać do twoich stóp, przynajmniej jeśli chodzi o skalowalność. głównym problemem tutaj jest powiązanie logiki domeny z pracą z obiektami, co staje się bardzo trudne do oszacowania, jeśli potrzebujesz czysto skalowalnego rozwiązania zoptymalizowanego dla bazy danych. pamiętaj o tym i zachęcaj programistów do korzystania z bazy danych bez warstw abstrakcji wysokiego poziomu. abstrakcja bazy danych to mit, orm to kłamstwo.
POCAŁUNEK
nowicjusze zwykle chcą stosować wszystkie te najlepsze praktyki, ustanawiać standardy kodowania, korzystać ze wszystkich ładnych łańcuchów narzędzi, cokolwiek. działa u niektórych programistów, ale niektórzy wpadną na mentalną blokadę, jeśli będzie to zbyt surowe. Testowanie jednostkowe i SCM jest naprawdę koniecznością, ale ktoś, kto dopiero zaczyna testowanie jednostkowe, naprawdę musi się nauczyć jego wartości, zanim ją pokocha. nie przesadzaj, stosuj praktyki krok po kroku i zobacz, jak to działa. KISS sprowadza się również do kodu. czasami najlepszym sposobem rozwiązania trudnego problemu jest rozwiązanie go źle. potrzebujesz algorytmu sześciu stopni separacji ? wybierz losowo wybranych znajomych. możesz stworzyć wokół niego kompletną aplikację o niewłaściwej logice. jeśli klient ostatecznie zdecyduje się go porzucić, wszyscy zaoszczędzą dużo pieniędzy.
zwinny
dowiedzieć się o zwinnych metodologiach, ekstremalnym programowaniu, scrumie itp. Istnieje wiele książek. każda książka sprawi, że Twój zespół będzie lepszy, ale najlepiej jest zaangażować każdego członka drużyny.
Kontrola wersji: Jeśli w systemie Windows TortoiseSVN jest najlepszy, najbardziej intuicyjny i najłatwiejszy w użyciu z mojego doświadczenia.
Framework: CodeIgniter . Ręce na najlepszą platformę programistyczną dla PHP.
IDE: Netbeans to najlepsze IDE dla PHP, którego używałem w systemie Windows.
Testy jednostkowe: Istnieje kilka opcji, wyszukiwarka google pojawi się wiele. CodeIgniter ma również własny tester jednostek.
Debugger: Xdebug.
Biblioteka JavaScript: Jquery
Program FTP: FileZilla
Administrowanie bazą danych: PhpMyAdmin
Model szkieletowy : makieta Balsimus lub użyj tablicy.
Różne: Użyj WAMP, jeśli w systemie Windows można łatwo zainstalować, uruchomić, zatrzymać i ponownie uruchomić apache, mysql i php wszystko w jednym pakiecie.
Ponadto, jeśli zamierzasz pracować na wielu różnych stronach internetowych, a większość z nich będzie miała kilka typowych funkcji, takich jak rejestracja, logowanie / wylogowanie, sekcja administracyjna do wyszukiwania użytkowników itp., Polecam zbudowanie małego projektu w dowolnej strukturze wybierasz i wykorzystujesz ten projekt jako podstawę każdego nowego projektu, który zaczynasz. Zwykle nazywam ten projekt „szkieletem”. Jeśli zamierzam rozpocząć pracę na xyz.com, skopiowałbym katalog szkieletu i zmieniłem jego nazwę na „xyz.com”, wypełniłem niektóre pliki konfiguracyjne, a ja miałbym kopię xyz.com z niektórymi funkcjami już pracuję.
źródło
Framework: CodeIgniter. Hands on the best web development platform for PHP.
To szczerze mówiąc, to bzdury. Jeśli kiedykolwiek używałeś Symfony, Railsów lub Django, zobaczysz kilka poważnych problemów. Nie ma modułowej struktury katalogów ani interfejsu wiersza poleceń. Następnie masz podstawowe komponenty, takie jak formularze i modele, które zajmują dużo kodu. Jeśli znasz jakieś wzorce oprogramowania, zobaczysz, że programator kodu jest do kitu. Przynajmniej użyj Kohany, która jest rozwidlona i wykonana poprawnie po śmierci społeczności.Zgadzam się głównie z postem Click Upvote, jednak jeśli pracujesz na stosunkowo dużej stronie, zdecydowanie polecam użycie frameworka Symfony w połączeniu z Doctrine ORM.
Jeśli twój projekt ma się odbyć w przyszłym roku, powiedziałbym, że poświęć trochę czasu na zainwestowanie w Symfony2 i Doctrine2.
Poza tym nie mogę wystarczająco podkreślić wagi rozwoju na systemie uniksowym, Ubuntu jest moją preferencją i wszechstronnym serwerem WWW. Pracuję przede wszystkim w systemie Windows, ale rozwijam się w systemie Ubuntu uruchomionym na maszynie wirtualnej VMWare na moim pulpicie (lub serwerze, gdy jestem w pracy).
Jeśli chodzi o IDE, bardzo polecam korzystanie z NuSphere PHPEd lub Storm PHP, niestety jak wszystkie wspaniałe rzeczy, które nie są darmowe.
źródło
Użycie diagramu UML jest przyjemne, ale jest całkowicie opcjonalne. Wszelkie diagramy wystarczyłyby, o ile Twój zespół rozumie, co one oznaczają. Próba użycia standardu, nikt tak naprawdę nie wie, może prowadzić do problemów i straconego czasu.
Poleciłbym rozpocząć każdą stronę od makiety ( http://balsamiq.com ) lub poprosić twojego projektanta, aby go narysował. Nie oczekuj, że programiści będą dobrzy pod względem estetyki wizualnej i będą tworzyć dobre strony znikąd.
Zlecić komuś wyznaczenie do przeglądu kodu, jeśli masz kilku starszych członków zespołu - spraw, by robili recenzje w rotacji ( komisja rewizyjna )
źródło
W pracy zespołowej potrzebujesz:
• przy użyciu kontroli wersji: myślę, że Git lub Subversion zadziałają dość płynnie
• rozwój oparty na testach: zaczynam się uczyć, że jest to koniecznością, ale nie doprowadzaj tego do skrajności
• kod debugujący (xdebug dla php): moim wyborem jest xdebug
• wykorzystanie diagramów UML: Pomaga to każdemu, kto ma praktyczną wiedzę na temat programowania i wzornictwa OO, jednak zawsze jest to dobra praktyka
• wykorzystanie OOP do konserwacji kodu wielokrotnego użytku: I ELASTYCZNOŚĆ, myślę, że jest to kluczowy aspekt OOP.
• wykorzystanie frameworków (takich jak Zend Framework dla php) do szybkiego tworzenia aplikacji: My Advise to SYMFONY, pierwszy framework php (nie jest zestawem narzędzi). Ma bardzo dużą społeczność, dużo dokumentacji i jest całkowicie zaimplementowany na php. Pracuję z tym od roku i całkowicie wiąże się z OOP
• może być także potrzebny system do śledzenia błędów, żądań funkcji itp., Takich jak: Modliszka lub Śledź . Te systemy są dość łatwe i jednoznaczne. Pozwalają również na powiązanie twojej subwersji i powiązanie twoich zobowiązań z pewnymi funkcjami lub błędami, które publikują ludzie.
Wreszcie, zawsze ważne jest, aby kierować zespołem programistów, aby okresowo odbywać małe spotkania, aby wszyscy wiedzieli status systemu w pewnym momencie i być może w ten sposób będziesz w stanie zaplanować lub zobaczyć, jak to działa.
W mojej firmie muszę codziennie wysyłać wiadomości e-mail z informacją o tym, nad czym pracuję i czy są jakieś komplikacje.
Powodzenia!
źródło
edytować
Zapomniałem najważniejszej rzeczy: specyfikacji. Napisz prawdziwe specyfikacje dla swojego projektu przed dotknięciem dowolnego kodu. Miej na uwadze wszystkie diagramy interakcji użytkownika. Uratuje ci wieki.
źródło
Kontrola wersji Ponieważ pracujesz w zespole, w twoim najlepszym interesie jest, aby przejść do czegoś rozproszonego. Twoimi kandydatami są Git i Mercurial. Oznacza to, że Twój zespół może zatwierdzać lokalnie bez przerywania projektu, ale nadal śledzić swoją pracę, a następnie przekazywać te zatwierdzenia do centralnego serwera. Jest także znacznie szybszy i ma mniej konfliktów scalania, ponieważ kod jest śledzony raczej jako zestawy zmian niż wersje. Przeczytaj przewodnik hginit (napisany przez współzałożyciela przepełnienia stosu nie mniej), a zrozumiesz nieco więcej o tym, czym jest DVCS. http://hginit.com/
Powinieneś także użyć repozytorium do wdrożenia zamiast rsync lub ftp.
Rozwój oparty na testach W zależności od tego, co robisz, testowanie może zmarnować dużo czasu. Nie twierdzę, że powinieneś go całkowicie pominąć, w przypadku mniejszych projektów to narzut. Jeśli piszesz bibliotekę lub duży projekt długoterminowy, napisz dla niego testy. Testy pomogą w fazie konserwacji. Pamiętaj, że TDD nie może znaleźć wszystkich twoich błędów. Będą problemy z doświadczeniem użytkownika, problemy z układem, problemy z wydajnością i tak dalej.
Debugowanie Xdebug jest w zasadzie twoim jedynym wyborem tutaj. Dobrze integruje się z Netbeans. Jeśli czujesz potrzebę drukowania zmiennych, powinieneś użyć pliku dziennika. Użyj funkcji dziennika frameworków, jest to znacznie bezpieczniejsze w produkcji.
Planowanie / diagramy Jeśli używasz dobrego frameworka, nie powinieneś zbytnio robić szczegółowych diagramów. Zachowaj prostotę i pracuj w krótszych cyklach wydawania, łatwo jest zaplanować więcej. Wymagania i specyfikacje projektu na pewno się zmienią, więc nie spędziłbym na nich całego twojego czasu. Pamiętaj, że specyfikacja kodu JEST na najbardziej szczegółowym poziomie.
Użyj narzędzia do śledzenia błędów (patrz poniżej), aby podzielić specyfikację na zadania, które możesz przypisać członkom zespołu. Użyj centralnego narzędzia do dokumentowania projektów, narzędzie do śledzenia błędów prawdopodobnie będzie mieć wiki.
Możesz użyć narzędzia takiego jak Mysql Workbench do projektowania schematów baz danych w diagramach i eksportowania ich jako SQL.
Ramy i OOP To chyba najważniejsza część. Znajdź popularną platformę, która będzie wspierać szybki rozwój i ponowne użycie kodu. Niektórym się nie spodoba, że to mówię, ale ramy powinny dyktować sposób, w jaki pracujesz. Powinien zapewniać strukturę, aby jeden programista mógł przełączać projekt i dokładnie wiedzieć, gdzie jest kontroler dla określonej strony, jakie dokładnie są zmienne szablonu i jak wykonać zapytanie do modelu. Niektóre frameworki pozwalają tutaj na zbyt dużą elastyczność i zauważysz, że programiści nie zawsze używają frameworku w ten sam sposób. Lubię filozofię python; powinien istnieć jeden oczywisty sposób na zrobienie wszystkiego. Dlatego lubię django i szyny, są dość uparte i to oznacza, że mogę spojrzeć na czyjś kod i zrozumieć, co on robi. Symfony wygląda tutaj jak najlepsza opcja,
Istnieje wiele pytań „jakie ramy” dotyczące przepełnienia stosu, takich jak to: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why
Śledzenie błędów Uczyń swój zespół dobrym narzędziem do śledzenia błędów stworzonym dla programistów. Nie używaj czegoś zbyt uproszczonego, jak basecamp. Redmine i Unfuddle to dwa przykłady doskonałych programów do śledzenia błędów, mogą również śledzić czas i integrować się z twoimi repozytoriami. Twój zespół powinien używać tego narzędzia do komunikowania się w kwestiach zamiast e-maila lub komunikatora. Ułatwia to nowemu deweloperowi, gdy dostępna jest historia błędów i dokumentów. W tym artykule dokładnie wyjaśniono, co powinien zrobić każdy dobry moduł do śledzenia błędów i dlaczego. http://www.joelonsoftware.com/articles/fog0000000029.html
źródło
Polecam zajrzeć do Bazaar w celu kontroli wersji. W porównaniu z Git ma tę główną zaletę, że w rzeczywistości jest łatwy w użyciu i instalacji w systemach Windows, Mac OS i Linux. Również polecenia bzr są bardzo podobne do jego odpowiedników svn, dlatego ktoś, kto wcześniej pracował z Subversion, może z łatwością korzystać z Bazaar bez zbyt dużej krzywej uczenia się. Patrzę na ciebie Git.
Poza tym jestem głęboko przekonany, że nie narzucaj programistom niczego. To powiedziawszy, niech używają IDE, systemu operacyjnego i tak dalej, że wolą.
Poza tym zdecydowanie polecam wykonanie testów wirte dla całego kodu, bez względu na to, jak żmudne.
Decyzja za lub przeciw imho ramowym nie jest czymś, co można zrobić na podstawie zaleceń tutaj. Sugeruję, aby wymienić te, które wyglądają obiecująco na podstawie ich funkcji, a następnie napisać małą aplikację testową w każdej z nich. (Napisz to samo za każdym razem.)
źródło