Einrückungsstil



Als Einrückungsstil (engl. Einrückungsstil ) Wird sterben Art und Weise bezeichnet, Quelltext von Prog Rahmen zur Besseren Lesbarkeit einzurücken und umschließende Syntax-Elemente Wie geschweifte Klammern {}zu positionieren. Als Alternativen wird Name daher auch manchmal “ Klammerstil “ (engl. Brace style ) anzutreffen.

Für stirbt Programmiersprache C ist also devote verbreitete Einrückungsstile, stirbt available in Programmier- und Skriptsprachen mit C-ähnlicher Syntax Wie C ++ , Java , JavaScript , Perl oder # C übernommen gerechnet wird. Für die Programmiersprache Python gibt es einen verbindlichen Einrückungsstil.

Die Positionierung der geschweiften Klammern ist wahrscheinlich der erstrüste Element eines Programmierstils .

Elemente des Einrückungsstils

Der Einrückungsstil befindet sich auf:

  • Positionierung umschließender Syntax-Elemente, Insignifikant {}und()
  • Tiefe der Einrückung
  • Verwendung von Leerzeichen vor {und(
  • Verwendung von Tabulatorzeichen zur Einrückung.

Häufig wird empfohlen, einen Quelltext nicht zu bilden, dass einrückung mit einer Verankerung der Tabulatorschrittweite auf einen anderen Wert sichtbar wird, z. B. 4 St. 8 Zeichen. Die meisten seltenen Editoren Rücken als Voreinstellung den Tabulator um 8 Leerzeichen ein. Über Probleme in der Darstellung in Bezug auf die Tabulatorschrittweite gänzlich vermeiden, Ratten, die das Einrückungsstile von der Verwendung von Tabulatorzeichen vermißt haben.

Positionierung umschließender Syntaxelemente

Siehe auch : Blockstruktur

Synthetische Syntaxelemente Synthetische Syntaxelemente Einer Sprache, die als Gruppe nicht bestimmbarer Elemente dient, bedeutet nicht, dass es wichtig ist, die Elemente zu verstehen, wenn es darum geht, Textilien zu unterdrücken. In Sprachen mit C -ähnlicher Syntax , z. B. C ++ , Java und C # , in Sprachen mit Pascal -ähnlicher Syntax, z. B. Modula-2 , Oberon und Cluster, Sowie einige andere Sprachen in Bezug auf die Syntax und seine Readbarkeit eine zentrale Bedeutung zu.

Positionierung in Pascal

Pascal-ähnliche Sprachen verwende zur Umschließung eigens dafür definierte Schlüsselwörter, meist BEGINDOund END. In der Praxis wird nur selten diskutiert, meist wird so vorgegangen, wer von Niklaus Wirth in der Literatur vorgeführt. Dabei steht BEGINbzw. steht in der Einrückung des äußeren Blocks auf einer eigenen Zeile, DOdag wird am Ende der vorigigen Zeile zusammen mit dem der DObenatigenden Anweisung geschrieben. Der Inhalt des Durch BEGINoder DOeingeleiteten Blöcke Wird bis zum Ausschließlich ENDeingerückt. Das ist eine gute ENDIdee, d.h. in der Einrückung des Äußeren Blocks schließlich wieder auf einer eigenen Zeile.

Beispiel: Positionierung der umschließenden Syntax-Elemente in Oberon

 VERFAHREN Add ( VAR x , y : INTEGER )
 BEGINNEN
 WÄHREND ( y ! = 0 ) DO
 y : = y - 1 ;
 x : = x + 1 ;
 ENDE
 ENDE Hinzufügen ;

Positionierung in C

C-ähnliche Sprachen zur Umschließung ein Paar von geschweiften Klammern {und }. In der Praxis Könige dieser Klammern wurde Nahezu gläubig positioniert, so dass es möglich war, den Stile zu sehen, weil er stärker als dominant gilt.

Dieser Abschnitt bedarf einer Überarbeitung. Naher ist auf der Diskussionsseite Informationen angegeben. Hilf mit, ER zu verbessern , und entfernte anschließend this Markierung.

Positionerung in XML und SGML basesten Sprachen

In XML- und SGML- Datenbanken werden Sprachen, z. B. HTML , hat sich durchgesetzt, zwischen Start-Tag und End-Tag einzurücken. Für Attribut findet der Mensch immer eine Eile, besonders wenn er geboren ist.

Beispiel: Einrückung in einem XHTML -Quelltext

 Dieses Dokument ist ein Beispiel für Einrückung in XML / SGML. < br
 />
 In diesem Beispiel gibt die Einrückungstiefe 4 Leerzeichen ein. </ p > </ body > </ html >

Beispiel: Einrückung in einem Ant- Quelltext

 <? Xml version = "1.0"?>
 <! -
 - Daimonin Editor - Datei erstellen
 ->
 <project
 name = "Daimonin Editor"
 default = "kompilieren"
 >
 <target
 name = "kompiliert"
 description = "kompilieren Daimonin Editor"
 >
 <javac
 srcdir = "src"
 destdir = "Klassen"
 encoding = "utf-8"
 source = "1.5"
 ziel = "1.5"
 debug = "nein"
 />
 </ target>
 </ project>

Einrückungstiefe

Die Einrückungstiefe bestimmt, wie wein der Inhalt eines Blocks eingerückt wird. Besonders weit gestreckt sind Einrückungstiefen um 4 oder 8 Leerzeichen, aber auch 2 oder 3 Leerzeichen sind nicht selten anzutreffen. Ein Experiment aus dem Jahr 1983 mit Pascal Code seit, dass einrückungstiefe einen signifikanten Einfluss auf die Verdelichichet des Codes hat. Das wird mit Einrückungstiefen im Bereich von 2 bis 4 Leerzeichen die beste Verständlichkeit erreicht. [1]

Hierine max Textbreite vorgegeben bzw. angestrebt wird, führt eine zu große Einrückungstiefe zu häufigen Zeilenumbrüchen. Sie sind herzlich eingeladen, die Kürzere Zeilenlänge in der Nähe der Einrückung, inmitten der langjährigen Ausdrücke, zu besuchen, um sie nicht unberührt zu lassen. This Effect tregt zur Abnahme der Lesbarkeit bei höheren Einrückungstiefen bei. [1] Die verjüngende Zeilenlänge lässt sich wie folgt berechnen: Verbleibende Zeilenlänge = Textbreite – Schachtelungstiefe · Einrückungstiefe . Bei einer Textbreite von 80 Zeichen, einer Einrückungstiefe von 4 Leerzeichen und einer Schlostelungstiefe von 3 Ebenen handelt es sich nicht um die Gelassenheit Zeilenlengge oder 68 Zeichen.

Beispiel: Java-Quelltext mit Einrückungstiefe

 public class Hallo {
 public static Leeres Haupt ( String ... args ) {
 wenn ( args . Länge > 0 ) {
 für ( String arg : args ) { -
 System . heraus . println ( "Hallo" + arg + "!" );
 }
 } else {
 System . heraus . Druck ("Hallo, Welt!" );
 }
 }
 }

Beispiel: Java-Quelltext mit Einrückungstiefe

 public class Hallo {
 public static Leeres Haupt ( String ... args ) {
 wenn ( args . Länge > 0 ) {
 für ( String arg : args ) { -
 System . heraus . println ( "Hallo" + arg + "!" );
 }
 } else {
 System . heraus . Druck ("Hallo, Welt!" );
 }
 }
 }

Beispiel: Java-Quelltext mit Einrückungstiefe

 public class Hallo {
 public static Leeres Haupt ( String ... args ) {
 wenn ( args . Länge > 0 ) {
 für ( String arg : args ) { -
 System . heraus . println ( "Hallo" + arg + "!" );
 }
 } else {
 System . heraus . Druck ("Hallo, Welt!" );
 }
 }
 }

Wer gesehen hat, wurde die wachsender Einrückungstiefe, die länger gesegelt ist, mehr eingeschränkt.

Verwendung von Tab oder Leerzeichen

Die Einrückung eines Quelltextes ist in der Vorlesung Programmierung mit Leerzeichen oder mit Tabulator vornehmen. Die Masters Compiler sehen darin keinen Unterschied, die Wahl bleibt dem Programmerer überlassen.

Hier können Sie argumentieren, argumentiert, dass Sie in Lernangelegenheiten verliebt sind. Lautsprecher Tab. Für Eine Einrückung mit Leerzeichen spricht that sterben Einrückungstiefe Grundsätzlich gleich bleibt und sterben Einrückung so Stets erkennbar ist, unabhängig Davon, Welche Tabulatorschrittweite used Wird. Für eine Einrückung mit Tabulator spricht, dass sich der Tabulatorschrittweite einstellen und seitenweise einbeziehen lässt.

Wetteriger als die Wahl des Einrückungsstils ist es, den ausgewählten Stil einzuhalten, da eine Mischung zu Problemen der Darstellung führen kann.

Beispiel: Einrückung (Tab Sowohl Als Auch Leerzeichen) gemischter Quelltext mit, wo mit Einer Tabulatorschrittweite von 4 Erstellt und 8 angezeigt Wird (Darstellung der Leerzeichen Durch Punkte, wo die Reiter Durch Pfeile).

public class Hallo {
→ public static Leere Haupt ( String ... args ) {
........ wenn ( args . Länge > 0 ) {
............ für ( String arg : args ) {
→ ............ System . heraus . println ( "Hallo" + arg + "!" );
 }
→ → } sonst {
............ System . heraus . println ( "Hallo, Welt!" );
........}
→ }
}

Die Darstellung könnte durch eine Umstellung der Tabulatorschrittweite korrigiert werden. Für einige wenige Editoren, z. B. vim , im Quelltext Steuerinformationen unterbringen, die automatisch den Editor auf den verdorbenen Tablet PC setzt. Diese Leitartikel weisen darauf hin, dass Ausnahme darstellend, dass es zu einem normalen Standard für ähnliche Einstellungen kommt. Ohne diese Möglichkeiten muss der Programmerer bei Quelltexten der Quelltext optisch betrachten, die Tabulatorschrittweite erraten und entsprechend neu stellen.

Bekannte Einrückungsstile

Dieser Artikel des folgenden Abschnitts ist nicht bereichernd mit Belegen ( zB Einzelnachweisen ) ausgestattet. Jene fragrichen Angaben waren möglicherweise möglicherweise demnächst entfernt. Bitte hilf der Wikipedia, du findest die Angaben recherchierst und gute Belege einfügst.

Hinweis zu dem beispiel

Die Code-Beispiele dienen dir, dem Einrückungsstil zu demonstrieren. Ihr Inhalt ist

1TBS / K & R / Kernel / Linux / UNIX / „Westküste“ / Stroustrup / Java / Sun

Beispiel: GNU-Beispiel in 1TBS

 if ( x < foo ( y , z )) {
 qux = bar [ 4 ] + 5 ;
 } else {
 while ( z ) {
 qux + = foo ( z , z );
 z - ;
 }
 return ++ x + bar ();
 }

Der Name 1TBS erhielt sie Hacker-Jargon und steht für „One True Brace Style“, der ein sowjetischer „Einmaliger Klammern-Stil“ war. Der Name bezieht sich darauf, dass dieser Begriff von Brian W. Kernighan und Dennis Ritchiedefiniert wurde.

Die Positionierung der öffnenden Klammern am Sailingende ist beliebt. Meine Stipendien werden für Sie arbeiten, aber Sie werden nicht enttäuscht sein.

Der andere bietet diese Stil

  • Im Wesentlichen wird der Code in der gleichen Zahl dargestellt.
  • Unselbstständige Folgeblöcke wurden mit einer schließenden Klammer unter einer schließenden geschlagen.

Die folgenden Mehrheit der Java- und ECMAScript-Programmerer sind verwende diesen Stil. Auch Perl-Programmierer verwöhnen SieTTBS, wir entschuldigen uns für Sie, Ihr Programm wird kurz sein.

C-Code verunstaltet früher 8 Leerzeichen pro Einrückungsschritt, sind auch manchmal 4 oder 3 Leerzeichen anzutreffen. Bei Java und C ++ ist eine Einhückung um 4 Leerzeichen.

Variante: Original K & R / Kernel / Linux / UNIX / Stroustrup

Beispiel: GNU-Beispiel in K & R

 int f ( int x , int y , int z )
 {
 wenn ( x < foo ( y , z )) {
 qux = bar [ 4 ] + 5 ;
 } else {
 while ( z ) {
 qux + = foo ( z , z );
 z - ;
 }
 zurückgeben ++ x + bar();
 }
 }

Of this Programmierstil Wurde von dem C-Erfindern Brian W. Kernighan und Dennis Ritchie (K & R) in IHREM Buch The C Programming Language (Deutscher Titel: Programmierer in C) Eulen zusammen mit Ken Thompson bei der Entwicklung von UNIX und Waden Kernels used. Auch die Code-Konventionen von Linus Torvalds für Linux schlagen diesen Stil vor.

Die dargestellte Einrückungstiefe ist der einzige verdunkelte Linux-Kernel. Die Einrückung untergeordneter Syntaxelemente behandelt dort 8 Leerzeichen. Präparieren der Lesbarkeit auch nach 20-stündiger Bildschirmarbeit. Eine Einrückung von mehr als 3 Ebenen wird abgeraten und zusätzlich einer Umstrukturierung des Quelltextes vorgeschlagen. [2]

Im Gegensatz zum durchgängigen Einsatz des 1TBS, wie z. B. beim Java-Style, wird bei der Definition von der Funktion des Allman-Stils zurückgegriffen.

Die Ausnahmeregelung für die Funktionen in C findet mehrere Begründungen:

  • Die Funktion kann nicht geschachtelt werden.
  • K & R bezahlte ebenfalls genau die Positionierung der Klammern
  • Die Ausnahmeregelung bietet eine besonders hohe Lesbarkeit bei umbrochenen
 static int
 kwrite_args ( Struktur posix_log_entry * rec_hdr , va_list args ,
 nicht signiertes char ** pvardata )
 {
 // ...
 }

Wird of this Stil auf C ++ , Capgemini, nennt man IHN Auch Stroustrup nach DEM Erfinder von C ++, die Welcher K & R Stil um Elemente für C ++ Erweitert Hut. Für alle neuen Elemente, z. B. Klassen, wurde Folgendes hinzugefügt: Klammern ans Ende einer Zeile:

 Klasse C : öffentlich B {
 public :
 // ...
 };

Variation: Java / Sun

Beispiel: GNU-Beispiel im Java-Stil

 int f ( int x , int y , int z ) {
 wenn ( x < foo ( y , z )) {
 qux = bar [ 4 ] + 5 ;
 } else {
 while ( z ) {
 qux + = foo ( z , z );
 z - ;
 }
 zurückgeben ++ x + bar();
 }
 }

Dieser wird von Sun für die Programmersprache Java empfohlen. [3] Auch bei C ++ ist dieser Stil häufig anzutreffen. Auf die Ausnahmeregelung, die schweigende Klammern von Methoden (= objektorientierte Funktion) gemeinen Allman zu positionieren, wird verzichtet, da Methoden als Elemente der Klassen den Geist kratzen.

Auf der anderen Seite wird eine Einrückung um 4 statt 8 Leerzeichen bevorzugt.

Allman / BSD / „Ostküste“

Beispiel: GNU-Beispiel im Allman-Style

 int f ( int x , int y , int z )
 {
 wenn ( x < foo ( y , z ))
 {
 qux = bar [ 4 ] + 5 ;
 Rückkehr qux ;
 }
 else
 {
 while ( z )
 {
 qux + = foo ( z , z );
 z - ;
 }
 zurückgeben ++x + Bar ();
 }
 }

Of this Stil Wird nach Eric Allman benannt , wo Eine vielzahl eines BSD -Werkzeugen geschrieben hat, Weshalb of this Stil auch nicht ganz richtig BSD-Stil heißt.

Als ein sanftes Verfahren, das diesen Stil einen hohen Zeilenverbrauch hat. Pro Block wird eine zusätzliche Zeile im Vergleich mit 1TBS benötigt. In C, C ++ und Sprachen mit vergleichbaren Präprozessoren sind also jedoch die Situation, in Denen of this Stil Auch Wesentlichen Vorteile Gegenüber 1TBS Zeigt, und beim Einsatz von Zwar Bedingt Compilierung für alternative Blockeinleitungen.

Beispiel: Allman-Stils bei negotiator Compilierung von Blockeinleitungen

 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
 INT WINAPI winmain ( hInstance hInst , hInstance , LPSTR strCmdLine , INT )
 #else
 int Haupt ( int argc , char ** argv )
 #endif
 {
 // ...
 }

Die Zahl der Klammern insgesamt bleibt Auch beim Einsatz bedingt Compilierung gleich war wichtig für korrekte Zuordnung von öffnenden und schließende Klammern in Texteditoren mit entsprechend Funktionalität ist sterben.

Hinweis: Dieser Stil wird zwar häufig BSD-genannt, für den BSD-Kernel wird jedoch UNIX und Linux 1TBS getäuscht, die in den Style Manpages von BSD-Derivate nachzulesen sind. [4] [5]

Horstmann

Es Horstmann-Stil is a Abwandlung Jan Allman Stil, bei ihnen sterben erste anweisung nach der öffnenden geschweiften Klammer direkt in nome Elbe Zeile geschrieben Wird. Dort Code von oben sieht dann so aus:

 int f ( int x , int y , int z )
 { wenn ( x < foo ( y , z ))
 { qux = bar [ 4 ] + 5 ;
 }
 else
 { while ( z )
 { qux + = foo ( z , z );
 z - ;
 }
 zurückgeben ++ x + bar();
 }
 }

Für VCS- Tools ist dieser Stil problematisch. Fügt man eine neue Anweisung ein, wird die Zeile 2 eingefügt. Das heißt, die ursprüngliche Zeile wird als „geändert“ markiert, obwohl semantisch gleich geb ist ist.

Whitesmith-Style

Dort wurde Whitesmith-Stil ursprünglich in der Dokumentation der ersten kommercellen C-Compilers eingesetzt. Dieser Stoppt in Windows Programmierer Handbücher, Andere Programme in Programmers Führer zu Windows(Durant, Carlson & Yao), in Programmierung Windows (Petzold) Windows XP Power Programming Techniques (Norton & Yao).

 int f ( int x , int y , int z )
 {
 wenn ( x < foo ( y , z ))
 {
 qux = bar [ 4 ] + 5 ;
 }
 else
 {
 while ( z )
 {
 qux + = foo ( z , z );
 z - ;
 }
 zurückgeben ++ x + bar();
 }
 }

Der Vorteil dieses Stils ist der, dass der Steuerstand des Blocks unterbricht.

GNU-Stil

Beispiel: Original GNU-Beispiel

 int f ( int x , int y , int z )
 {
 wenn ( x < foo ( y , z ))
 qux = bar [ 4 ] + 5 ;
 else
 {
 while ( z )
 {
 qux + = foo ( z , z );
 z - ;
 }
 return ++ x + bar ();
 }
 }

Dieser Programm Stil ist unser Hauptmerkmal von GNU Projects der Free Software Foundation, die in der Emphasis zu finden ist. Außerhalb der Freeware Software Foundation ist ein Euthanasie-Programm und auch in der Freis und Freizeitung und Freundliches und Verwaltung.

Ihr geniales Beispiel trug die GNU Coding Standards entnommen. [6] Der andere Beispiel Geist in Bezug auf Einrückung und Klammernsetzung umformatiert.

Verfechter von GNU-Stils beschreibt es als einen besonderen Leser, sowie die Worte „Klammern in der Positionierung und Einrückung“ und „Eigen Ebene“. Gegner argumentieren, dass dadurch ein Chaos bei der Quelltextformatierung entstehe; die Lesbarkeit und konsequente Einrückung würde erschwert.

SL5small-Style

Dort wurde SL5small-Style im ersten Online Code-Prettifier für den Script-Sprache Autohotkey implementiert (converts_your_autohotkey_code_into_pretty_indented_source_code).

Anstatt

wenn ( doIt1 )
{
 wenn ( doIt2 )
 {
 wenn ( nächste )
 {
 Senden , 5 b { Recht 5 }
 }
 }
}

Wird

wenn ( doIt1 ) {
 wenn ( doIt2 ) {
 wenn ( nächste )
 {
 Senden , 5 b { Recht 5 }
 }}}

notieren.

Dieser Stil ist ähnlich Einrückungen wie in Lisp üblich. Der Vorteil dieses Stils ist, dass insbesondere einrückungstiefe, Platz eingespart wird. Ein Nachtil ist, ohne dass die Verwendung moderner Editoren sich verändert hat, war die Anzahl der geschlossenen Klammern angeht.

Siehe auch

  • Programmierstil
  • Quelltextformatierung
  • Syntaxhervorhebung

Weblinks

  • Jargon über Einrückungsstile (englisch)
  • Code-Konventionen für die Java-Programmiersprache (Englisch)
  • Die GNU-Codierungsstandards (Englisch)
  • Erörterung der Vor- und Wichtung von Tabulator oder Leerzeichen der Einrückung (englisch)
  • Object Pascal Styleguide (Englisch)
  • C ++ Codierungsstandard von Todd Hoff (Englisch)
  • Kodierung von Standard des Zend Framework (PHP)
  • http://ahkscript.org/boards/viewtopic.php?t=8678
  • http://sl5.it/SL5_preg_contentFinder/examples/AutoHotKey/converts_your_autohotkey_code_into_pretty_indented_source_code.php

Einzelnachweise

  1. ↑ Hochspringen nach:a b Richard J. Miara, Joyce A. Musselman, Juan A. Navarro, Ben Shneiderman: Programm Einrückung und Verständlichkeit . In: Kommunikation der ACM . 26, Nr. 11, November 1983, S. 861-867.
  2. Hochspringen↑ kernel.org
  3. Hochspringen↑ oracle.de
  4. Hochspringen↑ openbsd.org
  5. Hochspringen↑ freebsd.org
  6. Hochspringen↑ gnu.org