Ich habe mal eine Frage zum Stil einer Programmierung.
Ich muss im Fernstudium zur Zeit wieder Programmieren (C#) und der Tutor legt auch Wert auf "Cleancode" bzw. einen guten Stil. Bisher habe ich im beruflichen Umfeld eher rudimentär "Spaghetti-Code" für kleine Sachen in den Abteilungen geschrieben. (bin kein Software-Entwickler)
Ist es besser/ sauberer Attribute in eigene Klassen auszulagern und diese dann mit Get und Set-Methoden zu versehen, wo ich diese brauche und die Instanz dann in der anderen Klasse recht global zu instanzieren? Oder kann man gern auf zusätzliche Klassen verzichten und legt die Attribute einfach "global" an und verwendet Sie durch den ganzen Code?
Also z.B.
Variante 1,
könnte ich Ball, Spielfeld, Spieler als Klassen darstellen, die jeweil dann z.b. eine Breite und eine Höhe haben.
Den Ball müsste ich mir dann in einer anderen Klasse, " in der das Spiel abläuft" instanzieren und dort wo ich es brauche via Get- und Set-Methoden die Attribute holen oder diese verändern.
Variante 2,
ich erstelle "global" in der Klasse, "in der das Spiel abläuft" Variablen und greife dann entsprechend, wo ich es brauche immer wieder auf diese globalen Variablen zu.
Sind beide Varianten gleichzusetzen oder bieten beide die gleiche Performance? Bei großen Projekten könnte ich mir vorstellen, dass die Lesbarkeit und Übersicht in Variante 1 höher ist, besonders wenn man je Klasse auch ein File erstellt. Gibt es Nachteile bei einer der Variante?
Beispiel V1:
Beispiel V2:
Was wäre denn der bessere Stil bzw. der saubere Code?
Übersichtlicher für die kleine Dinge, die ich da machen muss finde ich Variante 2.
Ich muss im Fernstudium zur Zeit wieder Programmieren (C#) und der Tutor legt auch Wert auf "Cleancode" bzw. einen guten Stil. Bisher habe ich im beruflichen Umfeld eher rudimentär "Spaghetti-Code" für kleine Sachen in den Abteilungen geschrieben. (bin kein Software-Entwickler)
Ist es besser/ sauberer Attribute in eigene Klassen auszulagern und diese dann mit Get und Set-Methoden zu versehen, wo ich diese brauche und die Instanz dann in der anderen Klasse recht global zu instanzieren? Oder kann man gern auf zusätzliche Klassen verzichten und legt die Attribute einfach "global" an und verwendet Sie durch den ganzen Code?
Also z.B.
Variante 1,
könnte ich Ball, Spielfeld, Spieler als Klassen darstellen, die jeweil dann z.b. eine Breite und eine Höhe haben.
Den Ball müsste ich mir dann in einer anderen Klasse, " in der das Spiel abläuft" instanzieren und dort wo ich es brauche via Get- und Set-Methoden die Attribute holen oder diese verändern.
Variante 2,
ich erstelle "global" in der Klasse, "in der das Spiel abläuft" Variablen und greife dann entsprechend, wo ich es brauche immer wieder auf diese globalen Variablen zu.
Sind beide Varianten gleichzusetzen oder bieten beide die gleiche Performance? Bei großen Projekten könnte ich mir vorstellen, dass die Lesbarkeit und Übersicht in Variante 1 höher ist, besonders wenn man je Klasse auch ein File erstellt. Gibt es Nachteile bei einer der Variante?
Beispiel V1:
C#:
public class Playground
{
int columns, rows;
public void set_PG_Dimensions(int x, int y)
{
this.columns = x;
this.rows = y;
}
public int get_PG_XDimensions()
{
return columns;
}
public int get_PG_YDimensions()
{
return rows;
}
}
public class Spiel : Form
{
static string filename;
Playground playground = new Playground();
public Spiel( )
{
ReadData();
this.ClientSize = new Size(playground.get_PG_XDimensions() * 28, playground.get_PG_YDimensions() * 28);
...
}
public void ReadData(){
StreamReader sr = new StreamReader(".\\" + filename);
playground.set_PG_Dimensions(int.Parse(sr.ReadLine()), int.Parse(sr.ReadLine()));
...
Beispiel V2:
C#:
public class Spiel : Form
{
static string filename;
int columns, rows;
public Spiel( )
{
ReadData();
this.ClientSize = new Size(columns * 28, rows * 28);
...
}
public void ReadData(){
StreamReader sr = new StreamReader(".\\" + filename);
columns = int.Parse(sr.ReadLine());
rows = int.Parse(sr.ReadLine());
...
Was wäre denn der bessere Stil bzw. der saubere Code?
Übersichtlicher für die kleine Dinge, die ich da machen muss finde ich Variante 2.
Zuletzt bearbeitet: