Was würden Sie als Best-Practice-Workflow-Tools für die Entwicklung von Webanwendungen (PHP) betrachten? [geschlossen]


18

Ich hoffe wirklich, dass jemand mit mehr Erfahrung die Frage anhand meiner Antwortbeispiele bearbeiten kann:

  • mit Versionskontrolle
  • Testgetriebene Entwicklung
  • Debugging Code (xdebug für PHP)
  • Verwendung von UML-Diagrammen
  • Verwendung von OOP für wartbaren, wiederverwendbaren Code
  • Verwendung von Frameworks (wie Zend Framework für PHP) für die schnelle Anwendungsentwicklung

Sonst noch etwas oder eine Ausarbeitung dessen, was ich oben erwähnt habe?

Grundsätzlich bin ich gerade dabei, ein Entwicklerteam zu bilden (ich bin selbst Entwickler), und möchte Ratschläge dazu erhalten, wie professionelle Programmierer / Designer usw. zusammenarbeiten und welche Standards / Paradigmen sie verwenden sollten.

Auch wenn jemand Bücher oder Links zu diesem Thema hat, würde ich das begrüßen!

Ich habe das gefunden, was meiner Meinung nach dem entspricht, wonach ich suche, oder zumindest einen Teil davon:

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

Antworten:


9

mit Versionskontrolle

SVN ist sehr verbreitet, aber Mercurial ist attraktiver, leistungsfähiger und hat eine solide GUI-Unterstützung.

Testgetriebene Entwicklung

Nun, wenn Sie Unit-Tests durchführen, sind Sie bereits auf der Gewinnerseite. Für Werkzeuge ist es eine Frage der Wahl. Das Testen muss so einfach wie möglich sein. Aus diesem Grund habe ich PHPUnit für SimpleTest über Bord geworfen.

Debugging-Code

Mit Unit-Tests brauchen Sie kaum xdebug. ich benutze xdebug normalerweise nur zum profilieren. (siehe auch KCachegrind)

Verwendung von UML-Diagrammen

Das größte Problem bei allem, was die Codelogik widerspiegelt, ist, dass die Synchronisierung viel Handarbeit erfordert. Sie können einige Aufgaben automatisieren, aber es ist nicht so nützlich, weil Sie normalerweise uml verwenden möchten, bevor Sie etwas haben. Das andere Problem ist, dass die Verwendung von Diagrammtools viel schwieriger ist als die von Stift und Papier oder einem Whiteboard. Verwenden Sie uml, wenn Sie ein Problem mit mehreren Entwicklern kommunizieren müssen oder wenn Sie eine Abstraktion für sich selbst benötigen. ("dia" ist ein schönes kostenloses Tool. Auch Mind-Mapping-Tools sind sehr praktisch für Brainstorming. Einige können sogar mit Stift und Papier mithalten.)

Verwendung von OOP für wartbaren, wiederverwendbaren Code

na ja, oop klappt bis zu einem gewissen Grad. :) ein guter Rat: Zusammensetzung> Vererbung. Vererbung ist ein mächtiges Werkzeug, das auf den ersten Blick wiederverwendet werden kann, aber Wartung und lose Kopplung werden darunter leiden. zweiter guter rat: wartung> wiederverwendung. Ein abstraktes System kann sehr mächtig, aber auch schwer zu pflegen sein.

Verwendung von Frameworks (wie Zend Framework für PHP) für die schnelle Anwendungsentwicklung

RAD ist eine gute Sache, um Ihre App frühzeitig zu veröffentlichen. Aber einige Komponenten - insbesondere ORM - schießen Ihre Füße, zumindest wenn es um Skalierbarkeit geht. Das Hauptproblem hierbei ist, dass Sie Ihre Domänenlogik an die Arbeit mit Objekten binden, was sehr schwer zu berücksichtigen ist, wenn Sie eine reine, skalierbare, datenbankoptimierte Lösung benötigen. Seien Sie sich dessen bewusst und ermutigen Sie Ihre Entwickler, die Datenbank ohne Abstraktionsebenen auf hoher Ebene zu verwenden. datenbankabstraktion ist ein mythos, orm eine lüge.

KUSS

Neulinge möchten in der Regel all diese Best Practices anwenden, Codierungsstandards einrichten und alle nützlichen Toolketten verwenden, was auch immer. es funktioniert für einige Entwickler, aber einige werden in eine mentale Blockade geraten, wenn die Dinge zu streng sind. Unit Testing und SCM sind wirklich ein Muss, aber jemand, der neu im Unit Testing ist, muss erst lernen, was es wert ist, bevor er es liebt. Übertreiben Sie nicht, wenden Sie Praktiken Schritt für Schritt an und sehen Sie, wie es funktioniert. KISS läuft auch auf Code hinaus. Manchmal ist es der beste Weg, ein hartes Problem zu lösen, es falsch zu lösen. Benötigen Sie einen 6-Grad-Trennungsalgorithmus ? wähle einfach zufällig ein paar Freunde aus. Sie können eine vollständige Anwendung mit falscher Logik erstellen. Wenn der Kunde sich irgendwann dazu entschließt, es fallen zu lassen, hat jeder eine Menge Geld gespart.

agil

Erfahren Sie mehr über agile Methoden, extreme Programmierung, Scrum usw. Es gibt viele Bücher. Jedes Buch wird Ihr Team verbessern, aber es ist das Beste, jeden Teamkollegen dazu zu bringen.


1
Fantastische Antwort! Vielen Dank. +150 Mitarbeiter für Sie, Sir! Fühlen Sie sich frei, dem Beitrag noch etwas hinzuzufügen, wie oben auf der Seite unter der Frage zu sehen sein wird. Dinge wie @TODO in Code, Kommentierungs- und Dokumentationssoftware usw.
Damien Roche

2
  • Versionskontrolle: Unter Windows ist TortoiseSVN meiner Erfahrung nach die beste, intuitivste und benutzerfreundlichste.

  • Framework: CodeIgniter . Nutzen Sie die beste Webentwicklungsplattform für PHP.

  • IDE: Netbeans ist die beste IDE für PHP, die ich unter Windows verwendet habe.

  • Unit Testing: Es gibt mehrere Möglichkeiten, eine Google-Suche wird viele auftauchen. CodeIgniter verfügt auch über einen eigenen Unit-Tester.

  • Debugger: Xdebug.

  • Javascript-Bibliothek: Jquery

  • FTP-Programm: FileZilla

  • Datenbankverwaltung: PhpMyAdmin

  • Wireframing: Balsimus Mockup oder verwenden Sie ein Whiteboard.

  • Sonstiges: Verwenden Sie WAMP unter Windows, um Apache, MySQL und PHP ganz einfach in einem Paket zu installieren, zu starten, zu stoppen und neu zu starten.

Wenn Sie an vielen verschiedenen Websites arbeiten werden und die meisten dieser Websites einige gemeinsame Funktionen wie Anmelden, Anmelden / Abmelden, einen Administratorabschnitt zum Suchen von Benutzern usw. haben, empfehle ich, ein kleines Projekt in einem beliebigen Framework zu erstellen Sie wählen und verwenden dieses Projekt als Basis für jedes neue Projekt, das Sie starten. Normalerweise nenne ich dieses Projekt "Skelett". Wenn ich anfange, an xyz.com zu arbeiten, kopiere ich das Hauptverzeichnis und benenne es in 'xyz.com' um, fülle einige Konfigurationsdateien aus und habe eine Kopie von xyz.com mit einigen der Funktionen es funktioniert bereits.


1
Nachdem ich diesen Beitrag gelesen und gesehen habe, dass ich bereits einige der empfohlenen Elemente verwende, habe ich beschlossen, die Netbeans-IDE zu testen. Kann jemand irgendwelche Plugins empfehlen, die sich für die PHP / Codeigniter-Entwicklung lohnen würden? Kann es auch gut mit Wampserver funktionieren?
Gortron

1
@Gortron Ich benutze Netbeans mit Codeigniter. Es gibt ein Autocomplete-Tool für Codeigniter / Netbeans: rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP ist im Grunde genommen eine Unix-Sprache, und die Entwicklung auf einer virtuellen Linux-Maschine ist eine gute Idee. Vermeiden Sie auch Subversion, verwenden Sie 2010 etwas verteiltes (git, hg, bzr). hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.Das ist, ganz offen gesagt, Blödsinn. Wenn Sie jemals Symfony, Rails oder Django benutzt haben, werden Sie einige große Probleme sehen. Es gibt keine modulare Verzeichnisstruktur, keine Befehlszeilenschnittstelle. Dann haben Sie Kernkomponenten wie Formulare und Modelle, die viel Code aufnehmen. Wenn Sie überhaupt irgendwelche Software-Muster kennen, werden Sie feststellen, dass der Codeigniter sehr nervt. Verwenden Sie mindestens Kohana, das CI-gegabelt ist und nach dem Tod der Community ordnungsgemäß ausgeführt wurde.
Keyo

Wenn Sie unter Windows arbeiten, würde ich SQLyog (es gibt eine Community Edition ) anstelle von phpMyAdmin empfehlen . Ich habe noch nie einen anständigen Ersatz für SQLyog unter Linux gefunden, was eine Schande ist ...
Dean Harding

1
@keyo, Danke für den Link. Ich habe das Autocomplete-Tool zu Netbeans hinzugefügt, sehr praktisch für ein Projekt mit vielen Funktionen in den Modellen. Ich glaube noch nicht, dass ich mich von SVN ändern werde. Ich bin nur eine Armee von 1 Leuten und brauche im Moment keine verteilten Systeme.
Gortron

2

Ich stimme größtenteils dem Beitrag von Click Upvote zu. Wenn Sie jedoch an einer relativ großen Website arbeiten, würde ich auf jeden Fall empfehlen, das Symfony-Framework in Verbindung mit dem Doctrine ORM zu verwenden.

Wenn Ihr Projekt nächstes Jahr fällig ist, würde ich sagen, nehmen Sie sich die Zeit, um in Symfony2 und Doctrine2 zu investieren.

Ich kann auch nicht genug betonen, wie wichtig es ist, auf einem Unix-basierten System zu entwickeln. Ubuntu ist meine Vorliebe und ein rundum toller Webserver. Ich arbeite hauptsächlich unter Windows, entwickle aber unter Ubuntu, das auf einer virtuellen VMWare-Maschine auf meinem Desktop (oder Server, wenn ich auf der Arbeit bin) ausgeführt wird.

Was die IDE angeht, empfehle ich dringend die Verwendung von NuSphere PHPEd oder Storm PHP, leider sind sie wie alle großen Dinge nicht kostenlos.


+1 für einen ORM. Ich habe unzählige Stunden damit verbracht, Suchanfragen in Codeigniter zu schreiben.
Keyo

PHP ist auf einem Linux-basierten System so viel besser. Vor allem, wenn Sie jemals ein C-basiertes Plugin verwenden möchten (libmemcached oder ImageMagick in den Sinn kommen)
Dean Harding

Einige großartige Dinge sind kostenlos. Was ist mit Linux?
Dan_waterworth

0

Die Verwendung eines UML-Diagramms ist nett, aber völlig optional. Alle Diagramme würden funktionieren, solange Ihr Team versteht, was sie bedeuten. Der Versuch, Standard zu verwenden, den niemand wirklich gut kennt, kann zu Problemen und Zeitverlust führen.

Ich würde empfehlen, jede Seite von einem Modell aus zu starten ( http://balsamiq.com ) oder von Ihrem Designer zeichnen zu lassen. Erwarten Sie nicht, dass Entwickler visuelle Ästhetik beherrschen und gute Seiten aus dem Nichts erstellen.

Lassen Sie jemanden für die Code-Überprüfung beauftragen, wenn Sie mehrere Mitglieder Ihres Seniour-Teams haben - lassen Sie diese abwechselnd überprüfen ( Überprüfungsausschuss ).


0

Im Umgang mit kollaborativer Arbeit benötigen Sie:

• Verwendung der Versionskontrolle: Ich denke, dass Git oder Subversion recht reibungslos funktionieren werden

• Testgetriebene Entwicklung: Ich fange an zu lernen, dass dies ein Muss ist, aber nehme es nicht zu extrem

• Debugging-Code (xdebug für PHP): xdebug ist meine Wahl

• Verwendung von UML-Diagrammen: Dies ist hilfreich, wenn jeder über Kenntnisse in OO Programming und DesignPatterns verfügt, es ist jedoch immer eine gute Praxis

• Verwendung von OOP für wartbaren, wiederverwendbaren Code: Und FLEXIBILITÄT, ich denke, dies ist der Schlüsselaspekt von OOP.

• Verwendung von Frameworks (wie Zend Framework für PHP) für eine schnelle Anwendungsentwicklung: My Advise ist SYMFONY, das erste PHP-Framework (kein Toolkit). Es hat eine sehr große Community, viele Dokumentationen und ist vollständig auf PHP implementiert. Ich arbeite seit einem Jahr damit und es ist absolut mit OOP verbunden

• Möglicherweise benötigen Sie auch ein System zum Nachverfolgen von Fehlern, Funktionsanforderungen usw., z. B .: Mantis oder Nachverfolgen . Diese Systeme sind recht einfach und unkompliziert. Außerdem können Sie Ihre Subversion binden und Ihre Commits mit bestimmten Funktionen oder Fehlern in Verbindung bringen, die von Personen gepostet wurden.

Schließlich ist es immer wichtig, dass Sie ein Entwicklerteam leiten, um regelmäßig kleine Besprechungen abzuhalten, damit jeder den Status des Systems zu einem bestimmten Zeitpunkt kennt und vielleicht auf diese Weise Sie in der Lage sind, zu planen oder zu sehen, wie die Dinge funktionieren.

In meiner Firma muss ich jeden Tag eine E-Mail senden, in der ich erzähle, woran ich gearbeitet habe und ob es Komplikationen gibt.

Viel Glück!


0
  • Framework : Codeigniter, ohne Zweifel. Es verfügt über alle Funktionen die Sie jemals brauchen könnte, und nicht zwingen Sie irgendwelche von ihnen zu verwenden , wenn Sie tun müssen ihnen;
  • Versionskontrolle, IDE : Ich bin ziemlich altmodisch, und ich glaube nicht, dass meine Antwort Ihnen wirklich helfen könnte.
  • Wireframing, UML : Old School auch hier, aber wirklich: Whiteboards gewinnen. Sie sind flexibel, erweiterbar und unterstützen alle Konventionen, die Sie für angebracht halten.
  • Datenbankverwaltung : phpmyadmin;
  • Entwicklungsserver-Betriebssystem : Ich mag banal sein, aber: Ubuntu. Installieren Sie einen LAMP-Server in Sekundenschnelle. Keine Panik über das Hinzufügen neuer Bibliotheken (der gefürchtete Imagick: ein Befehl, erledigt); Wenn Sie PHP mögen, werden Sie wahrscheinlich in der Produktion am Linux-Server arbeiten, also ist es besser, mit dem Üben zu beginnen. (Haftungsausschluss: Ubuntu ist nicht meine Lieblingsdistribution).
  • Verschiedenes : grep kann unglaublich nützlich sein, wenn Sie den Code anderer Leute debuggen (möchten Sie wissen, wie viele Controller ein bestimmtes Modell verwenden? Fertig!).

bearbeiten

Ich habe das Wichtigste vergessen: die technischen Daten. Schreiben Sie echte Spezifikationen für Ihr Projekt, bevor Sie einen Code berühren. Beachten Sie alle Diagramme zur Benutzerinteraktion. Es wird Ihnen Jahrhunderte ersparen.


0

Versionskontrolle Da Sie in einem Team arbeiten, liegt es in Ihrem Interesse, dass Sie sich für etwas Verteiltes entscheiden. Ihre Kandidaten sind Git und Mercurial. Dies bedeutet, dass Ihr Team lokale Commits durchführen kann, ohne das Projekt zu unterbrechen, aber dennoch die Arbeit verfolgen und diese Commits dann auf den zentralen Server übertragen kann. Es ist auch viel schneller und hat weniger Zusammenführungskonflikte, da der Code als Änderungssätze und nicht als Überarbeitungen verfolgt wird. Lesen Sie den Hginit-Leitfaden (nicht weniger vom Mitbegründer von Stack Overflow geschrieben) und Sie werden ein bisschen mehr darüber verstehen, was ein DVCS ist. http://hginit.com/

Sie sollten das Repository auch für die Bereitstellung anstelle von rsync oder ftp verwenden.

Testgetriebene Entwicklung Je nachdem, was Sie testen, kann dies viel Zeit kosten. Ich sage nicht, dass Sie es komplett überspringen sollten, für kleinere Projekte ist es Overhead. Wenn Sie eine Bibliothek oder ein großes Langzeitprojekt schreiben, schreiben Sie unbedingt Tests dafür. Die Tests helfen in der Wartungsphase. Beachten Sie, dass TDD nicht alle Ihre Fehler finden kann. Es wird Probleme mit der Benutzererfahrung, Layoutprobleme, Leistungsprobleme usw. geben.

Das Debuggen von Xdebug ist hier im Grunde Ihre einzige Wahl. Es lässt sich gut in Netbeans integrieren. Wenn Sie das Gefühl haben, Variablen jemals ausdrucken zu müssen, sollten Sie eine Protokolldatei verwenden. Verwenden Sie die Framework-Protokollfunktion, dies ist in der Produktion viel sicherer.

Planung / Diagramme Wenn Sie ein gutes Framework verwenden, sollten Sie nicht zu viele detaillierte Diagramme erstellen müssen. Halten Sie es einfach und arbeiten Sie in kürzeren Release-Zyklen, es ist leicht zu überplanen. Die Anforderungen und Spezifikationen eines Projekts müssen sich ändern, damit ich nicht all Ihre Zeit damit verbringe. Denken Sie daran, dass die Code-IS-Spezifikation auf der detailliertesten Ebene ist.

Verwenden Sie Ihr Bug-Tracking-Tool (siehe unten), um die Spezifikation in Aufgaben zu unterteilen, die Sie den Teammitgliedern zuweisen können. Verwenden Sie ein zentrales Tool, um die Projekte zu dokumentieren. Der Bug-Tracker wird wahrscheinlich ein Wiki haben.

Mit einem Tool wie Mysql Workbench können Sie Datenbankschemata in Diagrammen entwerfen und als SQL exportieren.

Frameworks und OOP Dies ist wahrscheinlich der wichtigste Teil. Finden Sie sich ein beliebtes Framework, das die schnelle Entwicklung und Wiederverwendung von Code unterstützt. Einige Leute werden es nicht mögen, wenn ich das sage, aber ein Rahmen sollte bestimmen, wie Sie arbeiten. Es sollte eine Struktur bereitstellen, damit ein Entwickler das Projekt wechseln und genau wissen kann, wo sich der Controller für eine bestimmte Seite befindet, was genau die Vorlagenvariablen sind und wie das Modell abgefragt werden soll. Einige Frameworks bieten hier zu viel Flexibilität, und Sie werden feststellen, dass Entwickler das Framework nicht immer auf die gleiche Weise verwenden. Ich mag die Python-Philosophie. Es sollte einen offensichtlichen Weg geben, alles zu tun. Aus diesem Grund mag ich Django und Rails, sie sind ziemlich eigensinnig und das heißt, ich kann mir einen anderen Code ansehen und verstehen, was er tut. Symfony scheint hier die beste Option zu sein.

Es gibt viele Fragen zum Thema "Welches Framework" wie diese: /programming/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

Bug Tracking Holen Sie sich für Ihr Team einen guten Bug-Tracker, der speziell für Entwickler entwickelt wurde. Verwenden Sie nicht etwas über vereinfacht wie Basecamp. Redmine und Unfuddle sind zwei Beispiele für exzellente Bug-Tracker. Sie können auch die Zeit verfolgen und sich in Ihre Repositories integrieren. Ihr Team sollte dieses Tool verwenden, um über Probleme und nicht über E-Mail oder Sofortnachrichten zu kommunizieren. Dies erleichtert neuen Entwicklern die Arbeit, wenn bereits eine Liste mit Fehlern und Dokumenten vorhanden ist. Dieser Artikel erklärt genau, was ein guter Bug-Tracker tun muss und warum. http://www.joelonsoftware.com/articles/fog0000000029.html


0

Ich würde empfehlen, sich Bazaar für die Versionskontrolle anzusehen. Gegenüber Git hat es den großen Vorteil, dass es unter Windows, Mac OS und Linux einfach zu bedienen und zu installieren ist. Auch die bzr-Befehle sind den svn-Befehlen sehr ähnlich. Daher kann jemand, der zuvor mit Subversion gearbeitet hat, Bazaar ohne großen Lernaufwand verwenden. Ich schaue dich an Git.

Abgesehen davon glaube ich fest daran, Ihren Entwicklern nichts aufzuzwingen. Das heißt, lassen Sie sie die IDE, das Betriebssystem und so weiter verwenden, die sie bevorzugen.

Abgesehen davon empfehle ich dringend, wirte Tests für Ihren gesamten Code, egal wie langweilig das ist.

Die Entscheidung für oder gegen ein Framework imho können Sie nicht anhand der hier gemachten Empfehlungen treffen. Ich schlage vor, Sie listen diejenigen auf, die Ihnen aufgrund ihrer Funktionen vielversprechend erscheinen, und schreiben dann in jedem von ihnen eine kleine Test-App. (Schreiben Sie jedes Mal dasselbe.)

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.