Programmierstile in C



Ähnliche Dokumente
Programmierstile in C. Von Sebastian Rothe

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Grundbegriffe der Informatik

Informationen zur Verwendung von Visual Studio und cmake

Kommentierung in C. Kommentierung in C. Von Sebastian Rothe 1/26. Kommentierung in C

Allgemeines. Verschiedene Sprachkonzepte C-Sprachfamilie C-ähnliche Programmiersprachen Allgemeines zu C. #include <stdio.h>

Professionelle Seminare im Bereich MS-Office

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

0. Einführung. C und C++ (CPP)

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

4. AUSSAGENLOGIK: SYNTAX. Der Unterschied zwischen Objektsprache und Metasprache lässt sich folgendermaßen charakterisieren:

PowerPoint 2010 Mit Folienmastern arbeiten

Die R-Homepage R herunterladen

Tutorium Informatik 1. Aufgabe 2: Formatierte Ein- und Ausgabe

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Qt-Projekte mit Visual Studio 2005

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

8 Kapitel TypoScript 219

Java Script für die Nutzung unseres Online-Bestellsystems

affilinet_ Flash-Spezifikationen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Serienbrieferstellung in Word mit Kunden-Datenimport aus Excel

Was ist Sozial-Raum-Orientierung?

Anleitung über den Umgang mit Schildern

impact ordering Info Produktkonfigurator

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Einfügen von Bildern innerhalb eines Beitrages

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

C/C++ Programmierung

Installation und Inbetriebnahme von Microsoft Visual C Express

Erfahrungen mit Hartz IV- Empfängern

Die Invaliden-Versicherung ändert sich

31. März 2015 L A TEX Struktur und Formatieren

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Lizenzierung von SharePoint Server 2013

Was meinen die Leute eigentlich mit: Grexit?

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Wie importiere ich mehrere Dateien gleichzeitig?

über die betriebliche Altersversorgung (bav) bav-kompetenz-center LZ 7710

Lehrer: Einschreibemethoden

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Für die Verwendung des Wikis wird dringend der Microsoft Internet Explorer Version 7.0 empfohlen!

Excel Funktionen durch eigene Funktionen erweitern.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Lizenzierung von SharePoint Server 2013

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

StuPro-Seminar Dokumentation in der Software-Wartung. StuPro-Seminar Probleme und Schwierigkeiten in der Software-Wartung.

Die neue Aufgabe von der Monitoring-Stelle. Das ist die Monitoring-Stelle:

Installationsanleitung. Installieren Sie an PC1 CESIO-Ladedaten einschl. dem Firebird Datenbankserver, wie in der Anleitung beschrieben.

Zeichen bei Zahlen entschlüsseln

Fotos in Tobii Communicator verwenden

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Anleitung zur Erstellung von Serienbriefen (Word 2003) unter Berücksichtigung von Titeln (wie Dr., Dr. med. usw.)

Professionelle Seminare im Bereich MS-Office

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Usability ohne Maus und ohne Bildschirm

Objektorientiertes Programmieren mit Suse Linux

Serien- mit oder ohne Anhang

Wir machen neue Politik für Baden-Württemberg

Sollsaldo und Habensaldo

Die Tabellenvorlage im Katalog für Tabellen speichern... 2 Weiteres zu Schnellbausteinkatalogen EDV + Didaktik - Dr. Viola Vockrodt-Scholz

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = Euro ergeben.

LAYOUT und GLIEDERUNG. Was Sie bei der Erstellung Ihrer Seminararbeit unbedingt beachten müssen!

A1.7: Entropie natürlicher Texte

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Leichte-Sprache-Bilder

SICHERN DER FAVORITEN

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Anleitung zum Bestellformular für Visitenkarten UZH

Taking RM Agile. Erfahrungen aus dem Übergang von traditioneller Entwicklung zu Scrum

Version 3.2 vom

Gruppenrichtlinien und Softwareverteilung

Algorithmen mit Python

WEBSEITEN ENTWICKELN MIT ASP.NET

infach Geld FBV Ihr Weg zum finanzellen Erfolg Florian Mock

Benutzeranleitung Service Desk Tool Erizone

teischl.com Software Design & Services e.u. office@teischl.com

Die Post hat eine Umfrage gemacht

1 Mathematische Grundlagen

Grundlagen von Python

Grundlagen der Theoretischen Informatik, SoSe 2008

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Mit dem Tool Stundenverwaltung von Hanno Kniebel erhalten Sie die Möglichkeit zur effizienten Verwaltung von Montagezeiten Ihrer Mitarbeiter.

Einführung in die Informatik Tools

CASCADING STYLE SHEETS WEBSEITEN-GESTALTUNG MIT CSS

BSV Ludwigsburg Erstellung einer neuen Internetseite

Transkript:

Von Sebastian Rothe 05.05.011

Inhaltsverzeichnis 1. Motivation wozu Code-Formatierung?. Definition: Programmierstil Gebräuchliche Konventionen Einrückungsstil Vertikale Anordnung Leerzeichen & Tabulatoren Left-hand- vs. Right-hand-comparisons Kommentare Namenskonventionen 3. GLib als Beispiel 4. Codeformatierungssoftware 5. Zusammenfassung 6. Quellen /4

Motivation wozu Code-Formatierung? 1 Selten wird eine Software nur von ihrem ursprünglichen Autor weiter gepflegt Gute Code-Formatierung verbessert die Lesbarkeit Leichtere, schnellere und flexiblere Erweiterung der Software Richtwert: 80% der Lebenszeit einer Software entfällt auf die Wartung 3/4

Definition: Programmierstil Was versteht man unter dem Begriff Programmierstil? Ein Satz von Regeln, nach denen der Programmierer den Code gestaltet Greift verschiedene Aspekte auf: Quelltextformatierung Namenskonventionen Wiederverwendbarkeit/Wartung Dokumentation des Codes Robustheit durch Fehlerbehandlung Modularität der Software 4/4

Definition: Programmierstil Und was ist guter Programmierstil? Guter Programmierstil ist immer subjektiv Es gibt keine feste Definition, was alles zu gutem Programmierstil zählt Verschiedene umstrittene Elemente, Beispiele: Einrückungsstil Zeilenlänge Namenskonventionen Left-hand- vs. Right-hand-comparisons Innerhalb eines Teams: Einigung auf bestimmte Konventionen Diese sollten dann auch konsequent verwendet werden 5/4

Gebräuchliche Konventionen Einige Konventionen werden bei sehr vielen Projekten eingehalten: Nur eine Anweisung pro Zeile Zeilenlänge auf 80 Zeichen beschränken Gängige Namenskonventionen (dazu später mehr) Vorgaben zur Dokumentation 6/4

Einrückungsstil Elemente des Einrückungsstils Positionierung von Klammern Tiefe der Einrückung Verwendung von Leerzeichen/Tabulatorzeichen Unterschiedliche Bezeichnungen für den (fast) gleichen Stil Meistens abhängig von der verwendeten Programmiersprache 7/4

Einrückungsstil K&R / 1TBS / Kernel / Unix / West Coast / Stroustrup / Java / Sun K&R: benannt nach Kernighan und Ritchie, den Entwicklern von C Öffnende Klammern am Ende eines Ausdrucks Schließende auf dem gleichen Level wie der Ausdruck Je nach Sprache zwischen 3 und 8 Leerzeichen pro Einrückungsschritt Quelle: [1]; Variation des K&R, Funktionsdefinitionen nach Allman Quelle: []; Variation des K&R: Java / Sun 8/4

Einrückungsstil Allman / BSD / East Coast / Horstmann Bessere Übersicht der umschließenden Klammern Aber: pro Block zusätzliche Zeilen für Klammerung Wieder die Frage: guter Programmierstil? Quelle: [3]; Code-Beispiel nach Allman Quelle: [4]; Code-Beispiel nach Horstmann 9/4

Einrückungsstil GNU-Stil Vor allem, aber nicht überwiegend, in GNU-Projekten genutzt Argument: bessere Lesbarkeit durch Einrückung der geschweiften Klammern Gegenargument: Verschlechterung der Lesbarkeit durch verwirrende Einrückung Quelle: [5]; Code-Beispiel im GNU-Stil 10/4

Einrückungsstil Es gibt unzählige Einrückungsstile Nur selten Einschränkung durch vorgegebene Syntax Gute Editoren unterstützen den Programmierer oftmals The position of braces is less important, although people hold passionate beliefs. We have chosen one of several popular styles. Pick a style that suits you, then use it consistently. Zitat von Brian Kernighan und Dennis Ritchie aus ihrem Werk The C Programming Language 11/4

Vertikale Anordnung Quelle: [6] Quelle: [7] Besserer Bezug der Variablen zueinander Zugewiesene Werte lassen sich besser vergleichen/überprüfen Alternative Anordnung (z.b. in PHP): Quelle: [8] Aber: Aufwändigere Code-Formatierung, ggf. Probleme bei Änderungen 1/4

Leerzeichen & Tabulatoren Leerzeichen Whitespace dient in vielen Sprachen der Lesbarkeit oder Beispiele bedeuten syntaktisch das Gleiche oder Jeder hat einen bevorzugten Stil Trotzdem sollte man sich im Team auf einen Stil einigen Tabs oder 13/4

Leerzeichen & Tabulatoren Leerzeichen oder Tabulator? Greift auf den Aspekt Einrückungsstile zurück Sollten Einrückungen durch Leerzeichen oder Tabs vorgenommen werden? Beide Methoden haben ihre Vorteile: Leerzeichen: konstante Darstellung unabhängig von Anzeigeoptionen Tabulator: jeder Programmierer kann die Einrückungstiefe selbst wählen Auch hier gilt: Varianten sollten nicht gemischt werden 14/4

Left-hand- vs. Right-hand-comparisons Kleines Codebeispiel (Perl) zur Verdeutlichung: Quelle: [9] Quelle: [10] Left-hand-comparison: der zu vergleichende Ausdruck steht links Right-hand-comparison ist dementsprechend das Gegenteil Right-hand-comparison wird für gewöhnlich genutzt Rechts: Bug bei der Right-hand-comparison kann übersehen werden Lesbarkeit (/Gewohnheit) oder Funktionalität? 15/4

Kommentare Kommentare sollten ausgiebig genutzt werden Unerlässlich für Team-Projekte Aber auch bei Kommentaren gibt es Richtlinien : Der Code soll nicht erklärt oder wiederholt werden Die Absicht soll deutlich werden Kommentare können als Platzhalter verwendet werden Praktisch zum Debuggen ( Auskommentieren ) Einzeilige Kommentare zählen erst ab 1999 zum C-Standard 16/4

Namenskonventionen Oft verwendet: Ungarische Notation Typ der Variable durch Präfix des Bezeichners erkennbar: Typische Namenskonventionen für C: Konstanten werden in Großbuchstaben deklariert Funktionen, Typendefinitionen und Variablen: Kleinbuchstaben Bezeichner mit führendem Unterstrich sollten nicht verwendet werden Namen vermeiden, die sich in nur einem Buchstaben unterscheiden Namen vermeiden, die ähnlich aussehen (kleines L, großes I, 1) 17/4

GLib als Beispiel 3 Was ist Glib? GLib ist eine Bibliothek für C Enthält verschiedene, sonst nur schwer zu realisierende Funktionen Beinhaltet eine Vielzahl komplexer Funktionen: Makros Basistypen Typumwandlung Timer Datenstrukturen Threads Diverse String-Verarbeitungsmöglichkeiten 18/4

GLib als Beispiel 3 Verschiedene Aspekte der angesprochenen Konventionen erkennbar Schwerpunkt: vertikale Anordnung Kommentare für große if-anweisungen Quelle: [11] 19/4

GLib als Beispiel 3 Quelle: [1] 0/4

Codeformatierungssoftware 4 Hierbei kann zwischen verschiedenen Möglichkeiten unterschieden werden: Tools zur Code-Analyse Tools zur Code-Formatierung Unterstützung des Programmierers durch den Editor Beispiel für C-Code-Formatierung: Indent -bap: blank line after procedure body -br: braces on if-line -brs: braces on struct declaration line -saf: space after for usw Quelle: [13]; Indent, äquivalente Formatierung für Linux-Stil 1/4

Codeformatierungssoftware 4 Einige für C-Programmierung geeignete Editoren Bloodshed Dev-C++ (auch für C geeignet) Notepad++ PSPad Eclipse IDE for C/C++ Developers Microsoft Visual Studio NetBeans IDE /4

Zusammenfassung 5 Es gibt unterschiedlichste Stile Jeder hat seine eigene Auffassung von gutem Programmierstil Wichtig ist, diesen für sich persönlich auch konsequent zu nutzen Im Team sollte ein einheitlicher Stil genutzt werden Programmierstile stellen keine Regeln, sondern eher Richtlinien auf Diese können gut begründet auch in Einzelfällen umgangen werden 3/4

Quellen 6 http://de.wikipedia.org/wiki/programmierstandard http://en.wikipedia.org/wiki/indent_style http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml http://en.wikipedia.org/wiki/programming_style http://en.wikipedia.org/wiki/coding_conventions http://en.wikipedia.org/wiki/naming_convention_(programming) http://golang.org/cmd/gofmt/ http://de.wikipedia.org/wiki/c_%8programmiersprache%9 http://en.wikipedia.org/wiki/list_of_tools_for_static_code_analysis#c http://www.dmoz.org/computers/programming/development_tools/source_code_formatters/ http://www.gnu.org/software/indent/ http://stackoverflow.com/questions/41149/coding-style-checker-for-c http://wr.informatik.uni-hamburg.de/teaching/sommersemester_011/c-programmierung http://wr.informatik.uni-hamburg.de/teaching/organisatorische_hinweise#proseminare http://www.inf.udec.cl/~leo/cstyguid.pdf http://www.psgd.org/paul/docs/cstyle/cstyle11.htm http://pronix.linuxdelta.de/c/standard_c/c_programmierung_5.shtml Codebeispiele [1] [5]: http://de.wikipedia.org/wiki/einrückungsstil Codebeispiele [6] [8]: http://en.wikipedia.org/wiki/programming_style Codebeispiel [9] + [10]: http://en.wikipedia.org/wiki/coding_conventions#left-hand_comparisons Codebeispiel [11]: GLib Version.6.1 (Windows), \include\glib-.0\gtimer.h Codebeispiel [1]: GLib Version.6.1 (Windows), \include\glib-.0\gtypes.h Codebeispiel [13]: http://www.gnu.org/software/indent/manual/indent.html#sec4 Alle Codebeispiele wurden mit PSPad noch einmal überarbeitet 4/4