SG Netzwerk      
Sonntag, 05. April 2009, 20:24
Programmierung: Über Stil, Sinn und dem Erstellen von Quelltexten
Etwas Philosophie für Quelltexte

Vorwort

In diesem Artikel möchte ich einige allgemeine Aspekte der Programmierung anbringen, auf die gerade im Hobbybereich wenig geachtet wird.

Es geht um die Art wie man Quelltexte schreibt und um das was man damit genau bezwecken will.

Schlechter Code

Schlechter Code entsteht schnell und meist regt er dazu an noch mehr davon zu produzieren.

Oftmals bekomme ich auf Arbeit Projekte, in denen es einfach kein Konzept gibt.

Dort werden oft doppelt und dreifach die gleichen SQL - Queries erzeugt ohne dafür zumindest eine Funktion zu schreiben.

Neulich sah ich einen Quelcode, der bestand aus If-Else Blöcken über 1200 Zeilen!

Nicht nur im Hobbybereich, sondern auch bei etlichen kommerziellen Projekten wird häufig nicht an die Qualität des Codes gedacht.

Mittelfristig und Langfristig denken...

...ist eine Kunst, die es ermöglicht Kunden auch in 10 Jahren noch zufrieden zu stellen (und überhaupt welche zu haben).

Oftmals arbeiten Agenturen nur um kurzfristig Umsatz zu machen. Schnell werden Projekte für unmögliche Budgets verkauft, der Druck auf den Programmierer abgewältzt, welcher dann unter diesem Druck schnell und unsauber arbeitet.

Das Gleiche trifft auch auf Hobbyprojekte zu, nur dass man sich hier den Druck selbst zu schaffen vermag.

Dennoch sollte ein guter Programmierer auch immer die Zukunft des Projektes sehen.

Kaum eine Software wird nicht nach dem Release nochmal verwendet.

Internetseiten müssen gepfelgt, neue Features implementiert werden.

Spieltitel sollen eine Fortsetzung erfahren und man würde gern den ein oder anderen Algorithmus wiederverwenden.

Das Auge programmiert mit

Ja logisch ich muss ja was sehen...

Jeder der programmiert wird schon einmal erlebt haben, dass man in einem Quelltext einfach nicht durchsieht.

Das liegt oft gar nicht an der logischen Komplexität, als vielmehr daran, dass das Gehirn versucht chaotische Anordnungen auszublenden.

Das sind normale Menschliche Reflexe.

Unübersichtlicher Code ist unleserlich -> nicht lesbar.

Aber Quelltexte sind dazu da um gelesen zu werden. Sie dienen nicht nur dem heruntertippen einer einfacheren, formaleren Ausdrucksart.

Sie sind Kommunikationsmittel!

Selbst wenn ich den Quelltext niemandem zeige, so dienen sie immernoch mir selbst. Ich muss meine Codes selbst lesen können um evtl. später das Beste wieder zu verwenden, und ich muss es dann immernoch verstehen.

Sinn und Zweck meines Quelltextes

Mein Quelltext dient nicht sich selbst.

Es gibt gerade in der Open Source - Gemeinde manchmal den Trend, dass sich junge Entwickler mit tollen Algorithmen profilieren wollen.

Ein BASIC-Interpreter der in einer einzigen 2-Zeilen-for-Schleife läuft z.B.

Klar, das ist schon eine erstaunliche Leistung.

Man sollte sich aber darüber im Klaren sein, dass wir hier keine Programmierwettbewerbe veranstalen, sondern Projekte schaffen wollen.

Da ist es ganz und gar egal, wie "cool" etwas Umgesetzt ist. Wichtig ist, dass es funktioniert, und das am besten auch noch gut.

Teamfähigkeit entwickeln, auch im Code

Fast alle Projekte sind Teamprojekte. Darum sollte man bei jeder Zeile Code darüber nachdenken, dass es ein wichtiger Vorteil ist, wenn jeder den Code versteht den ich gerade eintippe.

Dazu gehören sinnvolle Variablennamen.

Es mag schwierig erscheinen, aber man kann auch einen Iterator gut benennen.

Selbst wenn _iEnemyIterator evtl. 2 Sekunden länger zum Tippen verlangt, spart es meist 2 Minuten eines anderen, wenn er mit dem Iterator noch was anfangen muss.

Denkt immer an eure Teammitglieder und daran was diese tun müssen um mit eurer Arbeit weiter zu machen, bzw. daran anzuknüpfen!

Guter Stil

Jedes Team sollte

für sich eine Richtlinie zum Anlegen von Quelltexten definieren.

Wenn alle den selben Stil benutzen, ist es für alle einfacher andere Codes zu verstehen. Und das ist wichtig. 4 Augen sehen oftmals besser als 2! (wer sich jetzt die Brille aufsetzt fängt bitte nochmal an von vorn zu lesen).

Beispiel für guten Stil:



void my_function( int p_iParameter1, p_sParameter2 )
{
// setting the (do-something) - variable from function parameter
int _iLocaleInteger = p_iParameter1;

// do something

return _iFoundIndex;
}

Das ist eine erweiterte Form der ungarischen Notation.

Egal wie lang "do something" wird, weiß man immer recht genau was das für eine Variable am Ende ist.

p_ steht für Parameter.

_ ist eine Lokale Variable

m_ steht für Member.

Dahinter folgt ein Buchstabe für den Typen der Variable.

i - für integer, s - für string, p - für pointer, x - für Objekte.

Allein zu wissen, welchen Typen einer Variable man gerade vor sich hat spart Zeit und Frust.

Wenn dann noch die ungefähre Funktion beschrieben ist, durch den Namen, kann man viel schneller an die Gedanken des vorherigen Programmierers anknüpfen.

Richtig Kommentieren und Dokumentieren

Mein Chefprogrammierer sagte mir einmal: "Am besten Du machst das so: jede Zeile Code - eine Zeile Kommentar".

Das war zwar um mich ein bisschen zu ärgern, da ich selten kommentiert habe, war aber ebenfalls auch ernst gemeint.

Jeder Block Code der über 10 Zeilen geht benötigt mindestens einen Kommentar, damit man weiß was dieser tut.

Kommentare sind unerlässlich. Selbst bei noch so guten Variablennamen, ist es manchmal nicht auf den ersten Blick klar, was die Schleife oder der Block gerade tut.

Optimal ist es, wenn man ein Kommentierungs/Dokumentations-Tool verwendet.

Ich selbst verwende JavaDoc.

Man spart sich viel Zeit bei der Dokumentation, wenn man solch ein Tool hat, welches über den Code läuft und wie von Geisterhand eine Dokumentation daraus zaubert.

Die Dokumentation ist ebenfalls Teil eures Programms. Sie bildet die Schnittstelle zwischen Deadline und Betreuung/Wartung.

In professionellen Projekten wird seltenst eine Dokumentation erstellt. Da ich in einem Betreuungsteam arbeite, weiß ich wie negativ sich das auf das Budget auswirkt sowie auf die Zufriedenheit des Kunden. Der Entwickler könnte eine Änderungen in wenigen Minuten umsetzen, ein Programmierer der nichts mit dem Projekt bis dahin zu tun hatte wird Stunden brauchen.

Hätte er eine gute Dokumentation könnte er sicherlich einen großen Teil an Recherchearbeit sparen. Das ist pures Geld!

Schreibt ausführliche Kommentare direkt vor oder nach dem Schreiben der Funktion oder des Blockes. Es ist später schwieriger die genauen Schritte nachzuvollziehen.

Fazit - und Ende

Behaltet immer im Auge, was ihr mit den ganzen Code Zeilen tun wollt!

12000 Zeilen in der Woche runterzurattern muss nichts Positives sein. Besser sind 1000 Zeilen gut lesbarer, wartbarer, sauberer Code, als 12000 Zeilen Augenschmerzen.

Denkt immer daran, dass ihr nicht allein sein werdet mit euren Projekten!

Ein Open Source Projekt, welches von Anfang an sauber geführt wird, wird mit Sicherheit schneller und besser entwickelt werden können (siehe z.B. XFce).

Profiliert euch nicht als Programmierer, sondern als teamfähiges, kommunikatives Mitglied innerhalb eures Teams.

Denkt nie kurzfristig!

Das führt automatisch zu Scheuklappen, die ihr einfach in diesem Job nicht gebrauchen könnt. Alles wird immer voran gehen und Neues auf Altem aufbauen.

Es wäre sicher nicht gut eine neue Brücke auf Pfeilern zu errichten, die im Inneren bröckeln und es überhaupt ein Wunder ist, dass sie stehen.

1 | Bilder (0) | Kommentare (5)
 
Kommentare:
"Am besten Du machst… (Antsan, 20.07.2009, 15:00)
Das Problem, dass ich… (the.deathgate, 07.04.2009, 09:20)
Code Stil, Formatierung,… (Jaw, 07.04.2009, 08:37)
Bewertung:
selbst bewerten:
2,2
Zum Bewerten musst du registriert und angemeldet sein.