Quelltextformatierung
aus Wikipedia, der freien Enzyklopädie
Als Quelltextformatierung bezeichnet man den Vorgang, den Quelltext eines Computerprogramms nach bestimmten Regeln umzuformatieren, ohne die Programmfunktion zu ändern.
Quelltextformatierung ist als Funktion in manchen integrierten Entwicklungsumgebungen enthalten, es gibt aber auch eigenständige Programme, so genannte Quelltext-Formatierer (engl. source formatter oder auch beautifier), die es dem Programmierer ermöglichen, seinen Quelltext in ein gut lesbares Format zu bringen.
Die Verwendung einer Quelltextformatierung ist besonders dann nützlich, wenn sich der Programmierer an einen vorgegebenen Programmierstil halten muss, der es ihm vorschreibt, wie er seinen Quelltext zu gestalten hat.
Insbesondere bei Programmiersprachen, die eine C-ähnliche Syntax haben, z.B. C++, Java, C#, ist die Quelltextformatierung weit verbreitet.
In der Programmiersprache Python ist Quelltextformatierung ein Syntaxelement. Blöcke werden in Python durch Einrückung strukturiert, wodurch Leerzeichen eine syntaktische Bedeutung bekommen.
Beispiele für Quelltext-Formatierer sind die UNIX-Filter indent, indent-c++ und lint. Auch Editoren wie emacs oder vim verfügen intern über entsprechende Formatierungshilfen. Auch Microsoft Visual Basic verfügt über eine eingebaute Quelltextformatierungshilfe, diese formatiert jede Zeile sofort, nachdem sie vom Programmierer bearbeitet wurde.
Inhaltsverzeichnis |
[Bearbeiten] Vorteile der Quelltextformatierung
- Einhaltung eines Programmierstils (engl. code convention)
- Vereinheitlichung des Quelltextlayouts
- Erhöhung der Lesbarkeit
- Erhöhung der Wartbarkeit
Die Quelltextformatierung hat zum Ziel, den Programmierern die Arbeit mit Quelltexten zu erleichtern, insbesondere bei der Übernahme von Quelltexten anderer Programmierer oder der Arbeit in Teams.
[Bearbeiten] Änderungen bei der Quelltextformatierung
- Vereinheitlichung der Einrückung
- Entfernen oder Hinzufügen von Blöcken bei modifizierenden Anweisungen wie
if
,else
,for
,while
,do
etc. - Vereinheitlichung von Leerzeichen vor der Argumentliste, z.B.
- Leerzeichen vor den Argumenten modifizierender Anweisungen
- Keine Leerzeichen vor den Argumentlisten von Funktionsaufrufen
- Keine Leerzeichen vor der Parameterliste einer Funktionsdeklaration
- Konsequent einheitliche Positionierung der {} für Blöcke
- Einfügen von () gemäß der Operatorpriorität bei Operatoren mit allgemein unklarer Priorisierung
Weiter fortgeschrittene Algorithmen für Quelltextformatierung beherrschen außerdem:
- Vereinheitlichung von Symbolnamen
- Umbenennung von Symbolen gemäß Konventionen, z.B. m_MainControl in mainControl
- Ergänzung von Rümpfen für Dokumentationskommentare
- Übernahme von Aufgaben von Code-Analysewerkzeuge, bis hin zum Vorschlag von Refaktorisierungen
[Bearbeiten] Beispiele für die Arbeitsweise
Quelltext vor der Quelltextformatierung
for (int i=0;i<10;++i) if(values[i]>0&&values[i+1]>0) { out.println ("found!"); break; }
Quelltext danach
for (int i = 0; i < 10; ++i) { if (values[i] > 0 && values[i + 1] > 0) { out.println("found!"); break; } }
Was wurde geändert?
- Sämtliche modifizierenden Anweisungen (Anweisungen von
for
,if
etc.) wurden in Blöcke gefasst. Das vermeidet Fehler beim späteren Hinzufügen weiterer Anweisungen. - Sämtliche binären Operatoren (solche mit zwei Operanden) wurden mit Leerzeichen versehen.
- Die Einrückung wurde konsequent vereinheitlicht.
[Bearbeiten] Nachteile des Einsatzes
Programme, die die Quelltextformatierung durchführen, sind nicht in der Lage, wie Menschen die Bedeutung eines Quelltextes zu erfassen. Die Regeln für die Umformatierung sind sehr schematisch und ausdruckslos. Bewusst vorgenommene, dem Zweck der Verständlichkeit dienende Verstöße gegen die den Umformatierungsregeln zu Grunde liegenden Konventionen gehen verloren. Beispiel:
int width = minwidth*2 + padding*4;
wird unter Umständen zu
int width = minwidth * 2 + padding * 4;
Der Konventionsverstoß des Programmierers diente offensichtlich dem Zweck, die Verständlichkeit des Programmes zu erhöhen, indem er durch das Weglassen von Leerzeichen die höhere Priorität der Multiplikation (*) im Vergleich zur Addition (+) zum Ausdruck brachte. Diese nicht für das Programm aber für einen lesenden Programmierer relevante Information ging durch die Quelltextformatierung verloren.
Als weiterer Nachteil wird häufig angeführt, dass Quelltextformatierung den "persönlichen Stil" eines Programmierers zerstöre. Dem kann meist entgegengesetzt werden, dass es beim Programmieren im Team nicht auf den persönlichen Stil und das Ego Einzelner ankommt, sondern darauf, dass dem Team als ganzes ein angenehmes und zügiges Arbeiten ermöglicht werden sollte. Das bedeutet, dass auf persönlichen Stil zu verzichten und eine für das gesamte Team gültige Regelung zu befolgen ist.
[Bearbeiten] Siehe auch
Einrückungsstil, Programmierstil
[Bearbeiten] Weblinks
- SourceStyler C++, ein Quelltextformatierungsprogramm für C++
- PolyStyle, ein Quelltextformatierungsprogramm für verschiedene Sprachen
- Artistic Style, Freies Quelltextformatierungsprogramm für C, C++, C#, und Java Source Code
- Jalopy, ein Quelltextformatierungsprogramm für Java
- indent, ein Quelltextformatierungsprogramm für C
- PrettyPrinter - Freies Quelltextformatierungsprogramm - Modular erweiterbar (Syntaxdateien, Syntaxmodule)