www.wikidata.de-de.nina.az
Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Als Einruckungsstil engl indent style wird die Art und Weise bezeichnet Quelltext von Programmen zur besseren Lesbarkeit einzurucken und umschliessende Syntax Elemente wie geschweifte Klammern zu positionieren Als alternativer Name ist daher auch manchmal Klammerstil engl brace style anzutreffen Fur die Programmiersprache C gibt es vier verbreitete Einruckungsstile die auch in Programmier und Skriptsprachen mit C ahnlicher Syntax wie C Java JavaScript Perl oder C ubernommen wurden Fur die Programmiersprache Python gibt es einen verbindlichen Einruckungsstil Die Positionierung der geschweiften Klammern ist wahrscheinlich das umstrittenste Element eines Programmierstils Inhaltsverzeichnis 1 Elemente des Einruckungsstils 1 1 Positionierung umschliessender Syntax Elemente 1 1 1 Positionierung in Pascal 1 1 2 Positionierung in C 1 1 3 Positionierung in XML und SGML basierten Sprachen 1 2 Einruckungstiefe 1 3 Verwendung von Tabulatorzeichen oder Leerzeichen 2 Bekannte Einruckungsstile 2 1 Hinweis zu den Beispielen 2 2 1TBS K amp R Kernel Linux UNIX Stroustrup Java Sun 2 2 1 Variation Original K amp R Kernel Linux UNIX Stroustrup 2 2 2 Variation Java Sun 2 3 Allman BSD 2 4 Horstmann 2 5 Whitesmiths Stil 2 6 GNU Stil 2 7 Ratliff Stil 3 Siehe auch 4 Weblinks 5 EinzelnachweiseElemente des Einruckungsstils BearbeitenDer Einruckungsstil bezieht sich auf Positionierung umschliessender Syntax Elemente insbesondere und Tiefe der Einruckung Verwendung von Leerzeichen vor und Verwendung von Tabulatorzeichen zur Einruckung Haufig wird empfohlen einen Quelltext nicht so zu formatieren dass die Einruckung erst mit einer Veranderung der Tabulatorschrittweite auf einen anderen Wert sichtbar wird z B 4 statt 8 Zeichen Viele Editoren verwenden als Voreinstellung fur die Tabulatorschrittstellerucken den Wert von 8 Leerzeichen Um die Abhangigkeit der Darstellung von der eingestellten Tabulatorschrittweite ganzlich zu vermeiden raten die meisten Einruckungsstile von der Verwendung von Tabulatorzeichen grundsatzlich ab Positionierung umschliessender Syntax Elemente Bearbeiten Siehe auch Blockstruktur Umschliessende Syntax Elemente sind solche Syntax Elemente einer Sprache die zur Gruppierung einer unbestimmten Zahl von Elementen dienen nicht ausschliesslich aber insbesondere dann wenn sich die Elemente uber mehrere Quelltextzeilen erstrecken In Sprachen mit C ahnlicher Syntax z B C Java und C in Sprachen mit Pascal ahnlicher Syntax z B Modula 2 Oberon und Cluster sowie einigen weiteren Sprachen fallt diesen Elementen bei der Gestaltung eines Quelltextes in Bezug auf seine Syntax und seine Lesbarkeit eine zentrale Bedeutung zu Positionierung in Pascal Bearbeiten Pascal ahnliche Sprachen verwenden zur Umschliessung eigens dafur definierte Schlusselworter meist BEGIN DO und END In der Praxis wird eine Positionierung dieser Elemente nur selten diskutiert meist wird sie so vorgenommen wie von Niklaus Wirth in der Literatur vorgefuhrt Dabei steht BEGIN noch in der Einruckung des ausseren Blocks auf einer eigenen Zeile DO dagegen wird am Ende der vorherigen Zeile zusammen mit dem das DO benotigenden Statement geschrieben Der Inhalt des durch BEGIN oder DO eingeleiteten Blocks wird bis ausschliesslich zum END eingeruckt Das END steht ausgeruckt d h in der Einruckung des ausseren Blocks schliesslich wieder auf einer eigenen Zeile Beispiel Positionierung der umschliessenden Syntax Elemente in Oberon PROCEDURE Add VAR x y INTEGER BEGIN WHILE y 0 DO y y 1 x x 1 END END Add Positionierung in C Bearbeiten C ahnliche Sprachen verwenden zur Umschliessung ein Paar von geschweiften Klammern und In der Praxis konnen diese Klammern nahezu beliebig positioniert werden so dass sich mehrere verschiedene Stile entwickelt haben von denen keiner als dominant zu bezeichnen ist nbsp Dieser Abschnitt bedarf einer grundsatzlichen Uberarbeitung Naheres sollte auf der Diskussionsseite angegeben sein Bitte hilf mit ihn zu verbessern und entferne anschliessend diese Markierung Positionierung in XML und SGML basierten Sprachen Bearbeiten In XML und SGML basierten Sprachen z B HTML hat sich durchgesetzt die Inhalte von Elementen zwischen Start Tag und End Tag einzurucken Fur Attribute findet man immer haufiger eine mehrzeilige Aufteilung besonders wenn Ubersichtlichkeit gefragt ist Beispiel Einruckung in einem XHTML Quelltext lt xml version 1 0 gt lt DOCTYPE html PUBLIC W3C DTD XHTML 1 1 EN http www w3 org TR xhtml11 DTD xhtml11 dtd gt lt html xmlns http www w3 org 1999 xhtml xml lang de gt lt head gt lt title gt Einruckung in XML lt title gt lt head gt lt body gt lt h1 gt Einruckung in XML lt h1 gt lt p gt Dieses Dokument ist ein Beispiel fur Einruckung in XML SGML lt br gt In diesem Beispiel betragt die Einruckungstiefe 4 Leerzeichen lt p gt lt body gt lt html gt Beispiel Einruckung in einem Ant Quelltext lt xml version 1 0 gt lt Daimonin Editor build file gt lt project name Daimonin Editor default compile gt lt target name compile description compile Daimonin Editor gt lt javac srcdir src destdir classes encoding utf 8 source 1 5 target 1 5 debug no gt lt target gt lt project gt Einruckungstiefe Bearbeiten Die Einruckungstiefe bestimmt wie weit der Inhalt eines Blocks eingeruckt wird Besonders weit verbreitet sind Einruckungstiefen um 4 oder 8 Leerzeichen aber auch 2 oder 3 Leerzeichen sind nicht selten anzutreffen Ein Experiment aus dem Jahr 1983 mit Pascal Code zeigt dass die Einruckungstiefe einen signifikanten Einfluss auf die Verstandlichkeit des Codes hat Den Ergebnissen zufolge wird mit Einruckungstiefen im Bereich von 2 bis 4 Leerzeichen die beste Verstandlichkeit erreicht 1 Sofern eine maximale Textbreite vorgegeben bzw angestrebt wird fuhrt eine zu grosse Einruckungstiefe zu haufigeren Zeilenumbruchen Das ergibt sich durch die kurzere verbleibende Zeilenlange nach der Einruckung innerhalb derer langere Anweisungen oder Ausdrucke nicht mehr untergebracht werden konnen Dieser Effekt tragt zur Abnahme der Lesbarkeit bei hoheren Einruckungstiefen bei 1 Die verbleibende Zeilenlange lasst sich wie folgt berechnen verbleibende Zeilenlange Textbreite Schachtelungstiefe Einruckungstiefe Bei einer Textbreite von 79 Zeichen einer Einruckungstiefe von 8 Leerzeichen und einer Schachtelungstiefe von 3 Ebenen betragt die verbleibende Zeilenlange also noch 55 Zeichen Beispiel Java Quelltext mit Einruckungstiefe 2 Leerzeichen public class Hello public static void main String args if args length gt 0 for String arg args System out println Hello arg else System out println Hello world Beispiel Java Quelltext mit Einruckungstiefe 4 Leerzeichen public class Hello public static void main String args if args length gt 0 for String arg args System out println Hello arg else System out println Hello world Beispiel Java Quelltext mit Einruckungstiefe 8 Leerzeichen public class Hello public static void main String args if args length gt 0 for String arg args System out println Hello arg else System out println Hello world Wie man sieht werden mit wachsender Einruckungstiefe die Zeilen langer was bei einer begrenzten Textbreite weniger Platz fur Anweisungen und Ausdrucke innerhalb einer Zeile lasst Verwendung von Tabulatorzeichen oder Leerzeichen Bearbeiten Die Einruckung eines Quelltextes lasst sich in den meisten Programmiersprachen wahlweise mit Leerzeichen oder mit Tabulatorzeichen vornehmen Die meisten Compiler sehen darin keinen Unterschied die Wahl bleibt also dem Programmierer uberlassen Es gibt jedoch Argumente die fur oder gegen eine Einruckung mit Leerzeichen bzw Tabulatorzeichen sprechen Fur eine Einruckung mit Leerzeichen spricht dass die Einruckungstiefe grundsatzlich gleich bleibt und die Einruckung so stets erkennbar ist unabhangig davon welche Tabulatorschrittweite verwendet wird Fur eine Einruckung mit Tabulatorzeichen spricht dass sich jeder Entwickler selbst die Tabulatorschrittweite einstellen und somit seine personliche Einruckungstiefe bestimmen kann Wichtiger als die Wahl des Einruckungsstils ist es den gewahlten Stil konsequent einzuhalten da eine Mischung zu Problemen bei der Darstellung fuhren kann Beispiel Quelltext mit gemischter Einruckung sowohl Tabulatorzeichen als auch Leerzeichen der mit einer Tabulatorschrittweite von 4 erstellt und 8 angezeigt wurde Darstellung der Leerzeichen durch Punkte der Tabulatorzeichen durch Pfeile public class Hello public static void main String args if args length gt 0 for String arg args System out println Hello arg else System out println Hello world Die Darstellung konnte durch eine Umstellung der Tabulatorschrittweite korrigiert werden Fur einige wenige Editoren z B vim lassen sich in den Quelltexten Steuerinformationen unterbringen die den Editor automatisch auf die verwendete Tabulatorschrittweite stellen Diese Editoren stellen jedoch die Ausnahme dar ausserdem mangelt es an einem einheitlichen Standard fur solche Einstellungen Ohne diese Moglichkeiten muss der Programmierer bei gemischten Quelltexten jeden Quelltext optisch betrachten die Tabulatorschrittweite erraten und entsprechend neu einstellen Bekannte Einruckungsstile Bearbeiten nbsp Dieser Artikel oder nachfolgende Abschnitt ist nicht hinreichend mit Belegen beispielsweise Einzelnachweisen ausgestattet Angaben ohne ausreichenden Beleg konnten demnachst entfernt werden Bitte hilf Wikipedia indem du die Angaben recherchierst und gute Belege einfugst Hinweis zu den Beispielen Bearbeiten Die Code Beispiele dienen dazu den Einruckungsstil zu demonstrieren Ihr Inhalt ist kaum sinnvoll 1TBS K amp R Kernel Linux UNIX Stroustrup Java Sun Bearbeiten Beispiel GNU Beispiel in 1TBS if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Der Name 1TBS auch OTBS kommt aus dem Hacker Jargon und steht fur One True Brace Style was ubersetzt soviel bedeutet wie einzig wahrer Klammern Stil Der Name bezieht sich darauf dass dieser Stil von den C Erfindern Brian W Kernighan und Dennis Ritchie definiert wurde Die Positionierung der offnenden Klammern am Zeilenende ist gleichermassen beliebt wie verhasst Mit schlechten Entwicklungswerkzeugen besteht bei Unachtsamkeit die Gefahr offnende Klammern zu ubersehen und schliessende zu vergessen Andererseits bietet dieser Stil zwei Vorteile Wesentlich mehr Code wird in der gleichen Zahl Zeilen dargestellt Unselbststandige Folgeblocke werden an der schliessenden geschweiften Klammer unter einer schliessenden geschweiften Klammer in derselben Spalte erkannt Die uberwiegende Mehrheit der Java und ECMAScript Programmierer verwendet diesen Stil Auch Perl Programmierer verwenden meist 1TBS weil sie es sowieso bevorzugen ihre Programme moglichst kurz zu halten C Code verwendete fruher 8 Leerzeichen pro Einruckungsschritt heute sind auch manchmal 4 oder 3 Leerzeichen anzutreffen Bei Java ist eine Einruckung um 4 Leerzeichen die Regel Variation Original K amp R Kernel Linux UNIX Stroustrup Bearbeiten Beispiel GNU Beispiel in K amp R int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Dieser Programmierstil wurde von den C Erfindern Brian W Kernighan und Dennis Ritchie K amp R in ihrem Buch The C Programming Language Deutscher Titel Programmieren in C sowie zusammen mit Ken Thompson bei der Entwicklung von UNIX und seines Kernels verwendet Auch die Code Conventions von Linus Torvalds fur Linux schlagen diesen Stil vor Die dargestellte Einruckungstiefe ist die beim Linux Kernel verwendete Die Einruckung untergeordneter Syntaxelemente betragt dort 8 Leerzeichen Dies erleichtere die Lesbarkeit auch nach 20 stundiger Bildschirmarbeit Von einer Einruckung von mehr als 3 Ebenen wird abgeraten und stattdessen eine Umstrukturierung des Quelltextes vorgeschlagen 2 Im Gegensatz zum durchgangigen Einsatz des 1TBS wie z B beim Java Stil wird bei der Definition von Funktionen auf den Allman Stil zuruckgegriffen Die Ausnahmeregelung fur die Funktionen in C findet mehrere Begrundungen K amp R verwenden ebenfalls exakt diese Positionierung der Klammern Sie erlaubt es in einem Editor ohne Parser fur die jeweilige Sprache von Funktion zu Funktion zu springen z B im vi mittels bzw Die Ausnahmeregelung bietet eine besonders hohe Lesbarkeit bei umbrochenen Funktionsdefinitionen static int kwrite args struct posix log entry rec hdr va list args unsigned char pvardata Historisch gesehen war sie keine Optimierung sondern eine Notwendigkeit die aus der Funktionsdefinitions Syntax von K amp R d h pre ANSI C Code hervorging dort trennt die offnende geschweifte Klammer die Typenliste der Funktionsparameter vom Funktionskorper int foo a p int a char p Wird dieser Stil auf C angewandt nennt man ihn auch Stroustrup nach dem Erfinder von C welcher den K amp R Stil um Elemente fur C erweitert hat Fur alle neuen Elemente z B Klassen werden offnende geschweifte Klammern ans Ende einer Zeile gestellt class C public B public Variation Java Sun Bearbeiten Beispiel GNU Beispiel in Java Stil int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Dieser Stil wird von Sun fur die Programmiersprache Java empfohlen 3 Auch bei C ist dieser Stil haufig anzutreffen Auf die Ausnahmeregelung die geschweiften Klammern von Methoden objektorientierte Funktion gemass Allman zu positionieren wird verzichtet da Methoden als Elemente von Klassen geschachtelt sind Aufgrund der haufiger auftretenden Schachtelung wird eine Einruckung um 4 statt 8 Leerzeichen bevorzugt Allman BSD Bearbeiten Beispiel GNU Beispiel in Allman Stil int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Dieser Stil wurde nach Eric Allman benannt der eine Vielzahl an BSD Werkzeugen geschrieben hat weshalb dieser Stil auch nicht ganz korrekt BSD Stil heisst Da er die Grundeinstellung der Entwicklungsumgebung Visual Studio von Microsoft ist hat er in der Programmierung fur Windows eine grosse Verbreitung Der Vorteil des Allman Stils ist dass sich die Blockbereiche gut erkennen lassen was besonders bei hoheren Verschachtelungstiefen hilfreich ist Als nachteilig wird von manchen Programmierern angesehen dass dieser Stil einen hohen Zeilenverbrauch hat Pro Block wird eine zusatzliche Zeile im Vergleich mit 1TBS benotigt In C C und Sprachen mit vergleichbaren Praprozessoren gibt es jedoch Situationen in denen dieser Stil auch wesentliche Vorteile gegenuber 1TBS zeigt und zwar beim Einsatz von bedingter Kompilierung fur alternative Blockeinleitungen Beispiel Vorteil des Allman Stils bei bedingter Kompilierung von Blockeinleitungen if OGRE PLATFORM OGRE PLATFORM WIN32 INT WINAPI WinMain HINSTANCE hInst HINSTANCE LPSTR strCmdLine INT else int main int argc char argv endif Die Zahl der Klammern insgesamt bleibt auch beim Einsatz bedingter Kompilierung gleich was wichtig fur die korrekte Zuordnung von offnenden und schliessenden Klammern in Texteditoren mit entsprechender Funktionalitat ist Hinweis Dieser Stil wird zwar haufig BSD Stil genannt fur den BSD Kernel wird jedoch wie fur UNIX und Linux 1TBS verwendet wie in den Style Manpages der verschiedenen BSD Derivate nachzulesen ist 4 5 Horstmann Bearbeiten Der Horstmann Stil ist eine Abwandlung des Allman Stils bei dem die erste Anweisung nach der offnenden geschweiften Klammer direkt in derselben Zeile geschrieben wird Der Code von oben sieht dann so aus int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Fur VCS Tools ist dieser Stil problematisch Fugt man eine neue Anweisung zwischen dem und der vormals ersten Anweisung ein erscheint diese Anderung als eine Zeile wird durch 2 Zeilen ersetzt statt eine neue Zeile wurde eingefugt Das heisst die ursprungliche Zeile wird als geandert markiert obwohl sie semantisch gleich geblieben ist Whitesmiths Stil Bearbeiten Der Whitesmiths Stil wurde ursprunglich in der Dokumentation des ersten kommerziellen C Compilers eingesetzt Dieser Stil war in fruhen Windows Programmierhandbuchern popular unter anderem im Programmer s Guide to Windows Durant Carlson amp Yao in Programming Windows Petzold sowie Windows 3 0 Power Programming Techniques Norton amp Yao int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Der Vorteil dieses Stils ist dass der Block sich klar von der Kontrollanweisung absetzt und im Gegensatz zum Allman Stil nicht den Lesefluss des Blocks unterbricht GNU Stil Bearbeiten Beispiel Original GNU Beispiel int f int x int y int z if x lt foo y z qux bar 4 5 else while z qux foo z z z return x bar Dieser Programmierstil ist vor allem in GNU Projekten der Free Software Foundation zu finden und wird von ihr empfohlen Ausserhalb der Free Software Foundation ist er eher selten anzutreffen und auch innerhalb der Free Software Foundation wird er nicht von allen verwendet Das genannte Beispiel wurde den GNU Coding Standards entnommen 6 Die anderen Beispiele sind in Bezug auf Einruckung und Klammernsetzung umformatiert Verfechter des GNU Stils beschreiben ihn deshalb als besonders leserlich weil den geschweiften Klammern in der Positionierung und Einruckung eine eigene Ebene zukommt Gegner hingegen argumentieren dass dadurch ein gewisses Chaos bei der Quelltextformatierung entstehe die Lesbarkeit und konsequente Einruckung wurden erschwert Ratliff Stil Bearbeiten In dem Buch Programmers at Work besprach Wayne Ratliff den unten gezeigten Stil Er beginnt ahnlich wie 1TBS aber die Einruckung der schliessenden Klammer stimmt mit der des geschachtelten Blocks uberein Dieser Stil wird manchmal als Bannerstil bezeichnet wohl wegen der Ahnlichkeit mit einem Banner das an einer Stange hangt Der Stil kann das visuelle Erfassen vereinfachen da nur die Header eines Blocks auf dieser Ebene nach links hervortreten In C for i 0 i lt 10 i if i 2 0 doSomething i else doSomethingElse i oder in einer Auszeichnungssprache lt table gt lt tr gt lt td gt lots of stuff more stuff lt td gt lt td gt alternative for short lines lt td gt lt td gt etc lt td gt lt tr gt lt table gt lt table gt lt tr gt etc lt table gt Siehe auch BearbeitenDangling else Programmierstil Quelltextformatierung SyntaxhervorhebungWeblinks BearbeitenJargon uber Einruckungsstile englisch Code Conventions for the Java Programming Language englisch The GNU Coding Standards englisch Erorterung der Vor und Nachteile von Tabulator oder Leerzeichen bei der Einruckung englisch Object Pascal Style Guide englisch C Coding Standard von Todd Hoff englisch Coding Standard des Zend Framework PHP Einzelnachweise Bearbeiten a b Richard J Miara Joyce A Musselman Juan A Navarro Ben Shneiderman Program Indentation and Comprehensibility In Communications of the ACM 26 Jahrgang Nr 11 November 1983 S 861 867 umd edu PDF Linux kernel coding style The Linux Kernel documentation Abgerufen am 19 Juni 2023 oracle com style 9 OpenBSD manual pages Abgerufen am 19 Juni 2023 style Abgerufen am 19 Juni 2023 GNU Coding Standards Abgerufen am 19 Juni 2023 Abgerufen von https de wikipedia org w index php title Einruckungsstil amp oldid 234759561