Checkliste: Erfolgreiche Projektentwicklung

carapau

Aktives Mitglied
Moin Leute,

ich versuche stets meine Produktivität zu steigern und möchte deshalb eine kleine "Checkliste" ins Leben rufen, welche nützliche Informationen für jedermann zusammenfassen soll (Arbeitsweisen, Software, ...). Ich mache den ersten Schritt und würde mich über weitere Tipps freuen. Haltet euch nicht unbedingt an meine "Kategorien" und haut raus was euch bei euren Projekten hilft!
smile.gif


Editor
- Eclipse

Versionskontrolle
- SVN
- CVS

Arbeitsweisen
- Objektorientierte Programmierung
- Code einrücken (Bsp.: PHP)
- Code kommentieren (Bsp.: PHP)
- Einheitliche Syntax (CamelCase)

Caching
- Smarty
- Memcached

Logging
- verwende eigene Loggerklasse

Template Engines
- Smarty

Frameworks
- jQuery

Bugtracking
- Mantis BT

Gruß
carapau
 
Was genau macht deine Loggerklasse denn so? Wofür setzt du Sie genau ein.
 
QUOTE (R0x @ Fr 8.01.2010, 21:04) Was genau macht deine Loggerklasse denn so? Wofür setzt du Sie genau ein.

Die Loggerklasse schreibt Informationen in eine Datenbank oder wahlweise in Log-Files, je nach dem. Die Informationen sind in Level eingeteilt (Info, Error, Emergency, ...).

Ich verwende sie, um bei möglichen Fehlern oder Hacker-/Spamattacken rechtzeitig gewarnt zu werden. Was sonst? :)
 
Das Zend Framework hat mir schon viel Zeit gespart (und macht Template-Engines ala Smarty eigentlich überflüssig).

Allgemein könnte man sagen, dass die Verwendung von Frameworks heutzutage bei größeren Projekten fast Pflicht ist. Und mit dem ZF ist man da schon ganz gut bedient, würde ich meinen.

Grüße
Oli
 
Template-Engines sind für mich Level 1995.

Wer das verwendet, der arbeitet m.E. nach in der Web-Steinzeit.

Caching-Logiken sollten in brauchbaren Frameworks ohnehin enthalten sein, sonst sind die Frameworks nicht brauchbar.
 
QUOTE (Jürgen Auer @ Fr 8.01.2010, 21:44) Template-Engines sind für mich Level 1995.

Wer das verwendet, der arbeitet m.E. nach in der Web-Steinzeit.

Caching-Logiken sollten in brauchbaren Frameworks ohnehin enthalten sein, sonst sind die Frameworks nicht brauchbar.

Kannst du konkrete Frameworks nennen?
 
QUOTE (Jürgen Auer @ Fr 8.01.2010, 21:44) Template-Engines sind für mich Level 1995.

Wer das verwendet, der arbeitet m.E. nach in der Web-Steinzeit.

Template-Engines sind etwas wunderbares.

Du scheinst noch nie in einem mehrköpfigem Team von Designern & Programmieren an einem Projekt gleichzeitig gearbeitet zu haben. Level 1995
dry.gif


Smarty ist aber doch etwas overloaded.
 
QUOTE (steffi @ Fr 8.01.2010, 22:35)
QUOTE (Jürgen Auer @ Fr 8.01.2010, 21:44) Template-Engines sind für mich Level 1995.

Wer das verwendet, der arbeitet m.E. nach in der Web-Steinzeit.

Template-Engines sind etwas wunderbares.

Du scheinst noch nie in einem mehrköpfigem Team von Designern & Programmieren an einem Projekt gleichzeitig gearbeitet zu haben. Level 1995
dry.gif


Smarty ist aber doch etwas overloaded.

Ich arbeite auch gerne mit Template-Engines, vorallem wenn Designer mit im Team sind - eventuell aus alter Gewohnheit?

@steffi
Welche Template-Engine bevorzugst du denn und warum ist Smarty overloaded? Ein klarer Vorteil für mich ist die einfache Erweiterung der Tags/Functions.

Lg
 
QUOTE (carapau @ Fr 8.01.2010, 22:11)Kannst du konkrete Frameworks nennen?

Ich arbeite seit langem (seit 2003) mit .NET.

Damit können sowohl Webanwendungen (auf der Basis ASP.NET) als auch zusätzliche Dienste, mit denen die Webanwendung kommunizieren kann, bereitgestellt werden.

Bestimmte zusätzliche Caching-Dienste (nicht das Caching innerhalb der Webanwendung, sondern das Caching bestimmter Werte, die sonst jedesmal aus der Datenbank gelesen werden müßten) oder zusätzliche Dienste wie eine PDF-Generierung lassen sich so in eigene Prozesse auslagern. Bei Bedarf könnte man das sogar auf eigenen Servern laufen lassen (ist aber aktuell nicht notwendig).



QUOTE (steffi @ Fr 8.01.2010, 22:35)
QUOTE (Jürgen Auer @ Fr 8.01.2010, 21:44) Template-Engines sind für mich Level 1995.

Wer das verwendet, der arbeitet m.E. nach in der Web-Steinzeit.

Template-Engines sind etwas wunderbares.

Du scheinst noch nie in einem mehrköpfigem Team von Designern & Programmieren an einem Projekt gleichzeitig gearbeitet zu haben. Level 1995
dry.gif



Wenn ich Wikipedia zitieren darf:


QUOTE Eine Template Engine (von engl. Vorlage und Antrieb, Motor) ist eine Software, die eine Datei (das Template) verarbeitet, und bestimmte Platzhalter darin mit jeweils aktuellen Inhalten füllt.


Du scheinst noch nie mit Xml-Fragmenten und massiven Xslt-Dateien gearbeitet zu haben.

Bei einer klassischen Template Engine kann der Platzhalter einmalig durch Inhalt ersetzt werden. Was ist aber, wenn der Inhalt des Platzhalters selbst Platzhalter enthält, Du also ein rekursives Durchlaufen benötigst, bei dem jetzt völlig unbekannt ist, wieviele Durchläufe übermorgen benötigt werden.


So etwas manuell programmieren zu wollen, ist absurd. Xslt leistet das 'von ganz alleine' - seit 2001. Die ganze Konzeption von Xslt wurde ja u.a. gerade entwickelt, weil sich ein einfaches Suchen-Ersetzen (wie es ab etwa 1995 im Web möglich war) als 'viel zu wenig' herausstellte.

Das weitaus dramatischere Problem ist, daß man bei solchen Template-Engines ständig den PHP-Code anpassen muß, der die Templates verarbeitet.

Bei Xml/Xsl-Strukturen kann man im Normalfall darauf komplett verzichten, da an der Xslt-Datei nur selten Änderungen notwendig sind.

Wenn ich das Wiki-Beispiel zitiere:

Template:

QUOTE <body> <p>{NAME}</p> </body>

PHP

QUOTE $template->assign('NAME', 'Erika Mustermann');


Das sind individuelle Sprachen und individuelle Parser. So hat man in den 80-ern und 90-ern gearbeitet. Einer der Entwicklungsschübe, die durch das Web ausgelöst wurden, lief gerade darauf hinaus, sich von solchen 'Individualparsern' zu verabschieden.

Stattdessen etwas wie:


CODE <table>
<tr><th>Spalte1</th><th>Spalte2</th></tr>
<sd:rs sd:source-name='v_Artikel'>
<sd:normal>
<tr>
<td><sd:cell-value sd:col='ArtikelId'/></td>
<td><sd:cell-value sd:col='Artikelname'/></td>
</tr>
</sd:normal>
<sd:alternate>
<tr class='second-row'>
...
</tr>
</sd:alternate>
</sd:rs>
</table>


Aufgrund der rekursiven Auflösung kann überall zusätzlicher Html-Code drinstehen. Ferner können solche Fragmente selbst ausgelagert werden und von verschiedensten Stellen her genutzt werden. Die reine Xslt-Transformationszeit liegt selbst bei Seiten, die gesamte Designs (mit diversen solcher Fragmenten aus verschiedenen Tabellen) enthalten, im Bereich von 0,01 Sekunden.

Da können sich Designer völlig auf das Design konzentrieren.
 
Ich verstehe den Sinn von Template Engines heute auch nicht mehr. In jedem ordentlichen PHP-Framework sind Design und Logik eh getrennt...und ob ich nun:

CODE {$variable}


oder


CODE <?=$variable?>


in das Template schreibe, ist ja wohl egal. Caching übernimmt das PHP-Framework, wenn gewünscht. Also sind weder das Caching noch die "Zusammenarbeit mit Designern" ein Argument. Für beides braucht man keine extra-Templateengine.

Grüße
Oli
 
Projektplanung:
Was will ich? - Was brauch ich? - usw. - Notizen machen
Wireframing, Brainstorming
Mal hinsetzen und UML Diagramme bauen, wenigstens die die sich das nicht im Kopf vorstellen können was z.B. meine Klasse alles können muss
In Zusammenhang damit auch mal Gedanken über die Interfaces etc. machen nicht einfach mit einer da übergebe ich eh nur das Objekt Einstellung rangehen, Stichwort Design Pattern
Unit Tests schreiben (ja ich schreibe erst den Test bevor ich die Logik reinhaue)
Klassen bauen
Frontend Implementierung(ich spreche jetzt nicht von Admin/Website^^)
Abschließende Qualitätskontrolle und Bugfixing, es sei denn ihr habt wirklich für jeden Scheiss Unit Tests geschrieben...

In der Programmierzeit selbst fehlen meiner Meinung nach ein paar elementare Teile(+ 1 Beispiel für PHP, die JAVA Leute brauchen sicherlich keine Hilfestellung
smile.gif
) :

Debugger/Profiler -> XDebug
Auswertung vom Profiler -> KCacheGrind(für KDE), WinCacheGrind(wird das so geschrieben?)(Windows), WebCacheGrind(Basics...)
Unit Tests -> phpUnit
Continious Integration -> CruiseControl -> phpUnderControl
Generell für die Projektplanung -> Trac
Für die Dokumentation -> phpDoc

Achso wer mit MySQL arbeitet, da geht m.E. nach nichts mehr ohne MySQL Workbench!

Zum Thema Versionskontrolle, bitte nicht Git untern Tisch fallen lassen, ich denke das sollte sich jeder mal angucken und schauen ob es für ihn eine Option ist, hat viele Vorteile im direkten Vergleich zu SVN, CVS ist deprecated....

IDE -> Eclipse oder Netbeans, alles andere ist m.E. nach zu verspielt o.ä.

Ein gutes Framework hat aus meiner Sicht:
- ORM
- Namespaces!!!!
- fähiges Caching(APC, MemCache, XCache, etc.)
- im IdealFall ein durchdachtes MVC(womit schonmal ZF rausfliegt
tongue.gif
)
- Sammlung an Abstraktionen!!! für die gängigen Gebräuche(Logger, PDO, Auth, Workflow, Files, Trees, SOAP etc. etc. etc.)
- Template System(für eigene Projekte nicht wichtig, allerdings bei Kundenprojekten oder Produkten mittlerweile so eine Art Messlatte für ein gutes Produkt geworden, ob nun Smarty, Dwoo, Twig, XML[wink an Jürgen
smile.gif
] ist Projektspezifisch/Kundenwunschspezifisch)

Übrigens für meine privaten Sache nutze ich eine generierte DOM und schreibe so gut wie kaum irgendwo echo's etc. rein[wink an Oliver], das geht allerdings nur mit einer sauberen Semantik und wenn man sich mal ein Plan macht und nicht wild drauf los baut, OOP setze ich jetzt einfach mal vorraus.

So das war mal ein kurzer Übersicht was da meiner Meinung nach noch so gefehlt hat, Projektplanung ist kein leichtes Unterfangen, wer da in die Tiefe gehen will, einfach mal bei Amazon nach passenden Büchern suchen, da lohnt sich eigentlich fast alles was man in die Hände bekommt durchzulesen, da lernt man nie aus bzw. kann sich immer noch weiter entwickeln)
 
Zurück
Oben