Coding Conventions: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Hofmann (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Langenfeld (Diskussion | Beiträge)
K Änderungen von Dietsch (Diskussion) wurden auf die letzte Version von Greitschus zurückgesetzt
Markierung: Zurücksetzung
 
(69 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Stub}}
{{Stub}}
===Allgemein===


Mit '''Coding Conventions''' sind ein mehr oder weniger fester Satz von Regeln gemeint, an die sich alle an einem Projekt teilnehmenden Programmierer halten sollten um den Quellcode leichter les- und wartbar zu machen.
Mit '''Coding Conventions''' sind ein mehr oder weniger fester Satz von Regeln gemeint, an die sich alle an einem Projekt teilnehmenden Programmierer halten sollten um den Quellcode leichter les- und wartbar zu machen.
Hierbei werden zum Beispiel Namenskonventionen und ihre Schreibweise ausgemacht. Aber auch auf die Einrückungstiefe des Quellcodes, das Benutzen von Leerzeichen oder Tabstopps sowie andere Richtlinien bei der Codeerstellung kann hier eingegangen werden.
Hierbei werden zum Beispiel Namenskonventionen und ihre Schreibweise ausgemacht. Aber auch auf die Einrückungstiefe des Quellcodes, das Benutzen von Leerzeichen oder Tabstopps sowie andere Richtlinien bei der Codeerstellung kann hier eingegangen werden.


=== Namens Konventionen und Style ===
Die Coding Conventions, die Sie im SoPra verwenden, werden durch das Visual Studio Plugin Resharper (im [[Downloads|Downloadbereich]] herunterladbar) durchgesetzt. Jeder Teilnehmer des Softwarepraktikums hat sich an diese Coding Conventions zu halten. Die Coding Conventions für ReSharper sind in der Datei [[Datei:UserSettings.zip]] enthalten. Eine Installationsanleitung für die benutzerspezifischen Einstellungen befindet sich [[Downloads#ReSharper|hier]]. Es ist wichtig, dass Ihr Programm keine Warnungen und Fehlermeldungen von ReSharper enthält (vgl. [[Anforderungen#Technische Anforderungen|Technische Anfoderungen]]).
In diesem Abschnitt wird beschrieben nach welchen Regeln Klassen, Typen, Variabeln usw.
benannt werden müssen.  
 
==== Namens Konventionen ====


===== Typen, Klassen, Methoden & Konstanten =====
Die genauen Einzelheiten der Coding Conventions finden Sie bitte selbst heraus. Hier soll nur eine kurze Liste der wichtigsten Dinge benannt werden:


Für die Bennenung von [[Datentyp|Type]], [[Klasse|Klassen]], [[Methode|Methoden]] und Konstanten
== Namenskonventionen ==
benutzen wird die Namenkonventionen aus Pascal. Diese sehen vor, dass die Anfangsbuchstaben groß geschrieben werden und der Rest klein.


Dies gilt auch für zusammengesetzte Namen wie z.B."DefaultSize".
Die folgenden Namenskonventionen sind einzuhalten:


<source lang="csharp">
* [[Datentyp|Typen]] und [[Namensraum|Namespaces]]: <tt>UpperCamelCase</tt>
public class SomeClass
* [[Interface]]s: <tt>IUpperCamelCase</tt>
{
* [[Generic|Typ Parameter]]: <tt>TUpperCamelCase</tt>
  const int DefaultSize = 100;
* [[Methode]]n, [[Property|Properties]] und Events: <tt>UpperCamelCase</tt>
  public void SomeMethod()  
* Lokale [[Variable]]n: <tt>lowerCamelCase</tt>
  {
* Lokale [[Variable#Konstanten|Konstanten]]: <tt>lowerCamelCase</tt>
    // do something
* [[Methode#Parameter|Parameter]]: <tt>lowerCamelCase</tt>
  }
* [[Klasse|Felder]] (nicht private): <tt>mUpperCamelCase</tt>
}
* Instanzvariablen (private): <tt>mUpperCamelCase</tt>
</source> [[Kategorie:Code-Beispiele]]
* Statische Felder (nicht private): <tt>sUpperCamelCase</tt>
* Konstante Felder (nicht private): <tt>UpperCamelCase</tt>
* Konstante Felder (private): <tt>UpperCamelCase</tt>
* Statische [[Modifizierer|Readonly]] Felder (nicht private): <tt>sUpperCamelCase</tt>
* Statische Readonly Felder (private): <tt>sUpperCamelCase</tt>
* [[Enum]] Member: <tt>UpperCamelCase</tt>
* Alles andere: <tt>UpperCamelCase</tt>


===== Lokale Variablen & Methoden Parameter =====
== Klammerung ==
 
Bei Variabel wird die Namenkonventionen verwendet die in Camel üblich ist. Diese unterscheiden sich geringfügig von den Konvention aus Pascal.
 
Der einzige unterschied ist, dass der Name am Anfang klein geschrieben wird.


* Geschweifte Klammern stehen immer alleine in einer Zeile (einzige Ausnahme sind einzeilige [[Property|Properties]]). Beispiel:
<source lang="csharp">
<source lang="csharp">
void MyMethod(int someNumber)
class Class1
{  
{
   int number;  
   private int mVariable;
}
</source>


===== Interfaces =====
  // Braces in methods
  int Main()
  {
      int a = 3;
      if (a < 3)
      {
        return 1;
      }
      else
      {
        return 0;
      } 
  }


Bei Interfaces wird dem Klassen- und Dateinamen ein "I" angehängt.
  // Single-line Property
 
  public int Variable
<source lang="csharp">
  {
interface INewInterface
      get { return mVariable; }
{  
      set { mVariable = value; }
   //
   }
}
}
</source>
</source>


===== Private  Klassenvariabeln =====
* Runde Klammern (zum Beispiel bei der Verwendung von Parametern) haben keine Leerzeichen nach dem Öffnen der Klammer:
 
Einer Private Klassenvariablen wird ein "_" vorangestellt, die Variable wird dann nach den Camel Konventionen benannt.
 
<source lang="csharp">
<source lang="csharp">
public class SomeClass3
void Method(string s)
{  
{
  private int _number;
}
}
</source>
</source>


==== Naming Style ====
== Sprache im Code ==
 
===== Methoden =====


Regeln für das Sinnvolle benennen von Methoden:
Die vornehmliche Sprache für alles, was mit dem Quelltext zu tun hat, ist Englisch. Das bedeutet, dass alle Variablen-, Methoden- und Klassenvariablen englisch benannt werden, um die Verständlichkeit des Codes zu erhöhen. Auch für Kommentare wird Englisch empfohlen, ist hier jedoch nicht ganz so wichtig.


*Benutze Paare bestehend aus einem Verb und dem Objektname z.B. '''ShowDialog()'''.
[[Kategorie:Begriffe]]
*Methoden die einen Wert zurückgeben, sollte eine Beschreibung des Wertes im Namen haben z.B. '''GetObjectState()'''.
[[Kategorie:Entwurf]]
[[Kategorie:MS01]] [[Kategorie:Code-Beispiele]]

Aktuelle Version vom 5. August 2021, 12:09 Uhr



Mit Coding Conventions sind ein mehr oder weniger fester Satz von Regeln gemeint, an die sich alle an einem Projekt teilnehmenden Programmierer halten sollten um den Quellcode leichter les- und wartbar zu machen. Hierbei werden zum Beispiel Namenskonventionen und ihre Schreibweise ausgemacht. Aber auch auf die Einrückungstiefe des Quellcodes, das Benutzen von Leerzeichen oder Tabstopps sowie andere Richtlinien bei der Codeerstellung kann hier eingegangen werden.

Die Coding Conventions, die Sie im SoPra verwenden, werden durch das Visual Studio Plugin Resharper (im Downloadbereich herunterladbar) durchgesetzt. Jeder Teilnehmer des Softwarepraktikums hat sich an diese Coding Conventions zu halten. Die Coding Conventions für ReSharper sind in der Datei Datei:UserSettings.zip enthalten. Eine Installationsanleitung für die benutzerspezifischen Einstellungen befindet sich hier. Es ist wichtig, dass Ihr Programm keine Warnungen und Fehlermeldungen von ReSharper enthält (vgl. Technische Anfoderungen).

Die genauen Einzelheiten der Coding Conventions finden Sie bitte selbst heraus. Hier soll nur eine kurze Liste der wichtigsten Dinge benannt werden:

Namenskonventionen

Die folgenden Namenskonventionen sind einzuhalten:

  • Typen und Namespaces: UpperCamelCase
  • Interfaces: IUpperCamelCase
  • Typ Parameter: TUpperCamelCase
  • Methoden, Properties und Events: UpperCamelCase
  • Lokale Variablen: lowerCamelCase
  • Lokale Konstanten: lowerCamelCase
  • Parameter: lowerCamelCase
  • Felder (nicht private): mUpperCamelCase
  • Instanzvariablen (private): mUpperCamelCase
  • Statische Felder (nicht private): sUpperCamelCase
  • Konstante Felder (nicht private): UpperCamelCase
  • Konstante Felder (private): UpperCamelCase
  • Statische Readonly Felder (nicht private): sUpperCamelCase
  • Statische Readonly Felder (private): sUpperCamelCase
  • Enum Member: UpperCamelCase
  • Alles andere: UpperCamelCase

Klammerung

  • Geschweifte Klammern stehen immer alleine in einer Zeile (einzige Ausnahme sind einzeilige Properties). Beispiel:
class Class1
{
   private int mVariable;

   // Braces in methods
   int Main()
   {
      int a = 3;
      if (a < 3)
      {
         return 1;
      }
      else
      {
         return 0;
      }  
   }

   // Single-line Property
   public int Variable
   {
      get { return mVariable; }
      set { mVariable = value; }
   }
}
  • Runde Klammern (zum Beispiel bei der Verwendung von Parametern) haben keine Leerzeichen nach dem Öffnen der Klammer:
void Method(string s)
{
}

Sprache im Code

Die vornehmliche Sprache für alles, was mit dem Quelltext zu tun hat, ist Englisch. Das bedeutet, dass alle Variablen-, Methoden- und Klassenvariablen englisch benannt werden, um die Verständlichkeit des Codes zu erhöhen. Auch für Kommentare wird Englisch empfohlen, ist hier jedoch nicht ganz so wichtig.