Leerer Block/Leerer Konstruktor: Unterschied zwischen den Versionen

Aus Programmieren-Wiki
K (Ubsih verschob die Seite Leerer Block nach Leerer Block/Leerer Konstruktor: Vollständigkeit und bessere Anlehnung an die Config)
(addition(LeererBlock): Added the part about private constructors [issue-18])
 
(4 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Bewertungsrichtlinie
{{CategoryBlock
|baustelle=Ja
|Baustelle=Ja
|blatt=1
|Java Grundlagen=Nein
|beschreibung=Als leeren Block bezeichnen wir Blöcke innerhalb von Schleifen, Statements oder Konstruktoren, die nicht Kommentiert oder anderweitig Dokumentiert wurden. Diese leeren Blöcke stellen die lesende Person erstmal vor ein Rätsel, warum diese Block denn leer ist und ob dort nicht eigentlich Funktionalität fehlt.
|Organisation=Nein
Um das zu vermeiden ist es wichtig, diese Blöcke zu vermeiden. Kann man diese Blöcke nicht vermeiden, ist es guter (und vorausgesetzter Stil) diesen mit einer Begründung zu dokumentieren.
|Programmierstil=Ja
|schweregrad=leicht
|Bewertungsrichtlinie=Ja
|negativ=<syntaxhighlight lang="Java">
|blattAnnotation=1
public class Matrix {
|blattAbzug=2
}}
{{Inhaltsblock
|vorher===Beschreibung==
Als leeren Block bezeichnen wir Blöcke innerhalb von Schleifen, Statements oder Konstruktoren, die nicht kommentiert oder anderweitig dokumentiert wurden. Diese leeren Blöcke stellen die lesende Person erst mal vor ein Rätsel, warum dieser Block denn leer ist und ob dort nicht eigentlich Funktionalität fehlt.
Um das zu vermeiden, ist es wichtig, diese Blöcke zu vermeiden. Kann man diese Blöcke nicht vermeiden, ist es guter (und vorausgesetzter Stil) diesen mit einer Begründung in einem sinnvollen Kommentar, in genau diesem Block, zu dokumentieren.
}}
{{Inhaltsblock
|color=red
|vorher=Negativbeispiel:
|Beispiel=public class Matrix {
public void printMatrixSize(int size) {
public void printMatrixSize(int size) {
if (size == 0) {
if (size == 0) {
Zeile 15: Zeile 25:
}
}
}
}
</syntaxhighlight>
|beispielname=LeererBlockBad1
Hier ist der leere Block des if-Statements ein Problem. Warum passiert nichts für size 0? Warum machen wir dafür keine Ausgabe?
|nachher=Hier ist der leere Block des if-Statements ein Problem. Warum passiert nichts für size 0? Warum machen wir dafür keine Ausgabe?
 
}}
<syntaxhighlight lang="Java">
{{Inhaltsblock
public class Table {
|color=red
|Beispiel=public class Table {
private rows = 0;
private rows = 0;
Zeile 26: Zeile 37:
}
}
}
}
</syntaxhighlight>
|beispielname=LeererBlockBad2
Der leere Konstruktor für Table ist unnötig, da wir von der Java-API einen default-Konstruktor bereitgestellt bekommen. Dieser existiert implizit, wenn kein anderer Konstruktor anwesend ist.
|nachher=Der leere Konstruktor für Table ist unnötig, da wir von der Java-API einen default-Konstruktor bereitgestellt bekommen. Dieser existiert implizit, wenn kein anderer Konstruktor anwesend ist.
|positiv=<syntaxhighlight lang="Java">
}}
public class Matrix extends BaseMatrix {
{{Inhaltsblock
@Override
|color=green
protected void prepareMatrix(int size) {
|vorher=Positivbeispiel:
// This method will be invoked from the super class
|Beispiel=try {
// In this special case, no preparation is needed here
    file.close();
}
} catch (IOException e) {
    // File cannot be closed, but this is non-critical,
    // as the program can still continue running normally here.
    // No further handling required.
}​
|beispielname=LeererBlockGood
|nachher=Hier ist korrekt dokumentiert, warum der Catch-Block leer bleibt.
}}
{{Inhaltsblock
|vorher===Private Konstruktoren==
Da private Konstruktoren oft dazu dienen, eine Instanziierung zu verhindern, benötigen sie keinen Kommentar.
}}
{{Inhaltsblock
|color=red
|Beispiel=public final class InputParseUtilities {
 
    private InputParseUtilities() {
        // Instantiation for utility class
    }
}
}}
{{Inhaltsblock
|color=green
|Beispiel=public final class InputParseUtilities {
 
    private InputParseUtilities() { }
}
}
</syntaxhighlight>
Hier ist korrekt dokumentiert, warum die Methode in dieser Klasse leer bleibt. Es gibt aber auch Klassen, in denen diese Methode nicht leer ist. Deshalb dürfen wir die Methode im Quellcode behalten.
|kategorie=Programmierstil
|weiterlesen=Nein
}}
}}

Aktuelle Version vom 17. Oktober 2025, 09:19 Uhr

🚧 Diese Seite befindet sich in Bearbeitung 🚧
🤓 Diese Seite ist eine Bewertungsrichtlinie, die ab Blatt 1 annotiert und ab Blatt 2 abgezogen wird. 🤓

Beschreibung

Als leeren Block bezeichnen wir Blöcke innerhalb von Schleifen, Statements oder Konstruktoren, die nicht kommentiert oder anderweitig dokumentiert wurden. Diese leeren Blöcke stellen die lesende Person erst mal vor ein Rätsel, warum dieser Block denn leer ist und ob dort nicht eigentlich Funktionalität fehlt. Um das zu vermeiden, ist es wichtig, diese Blöcke zu vermeiden. Kann man diese Blöcke nicht vermeiden, ist es guter (und vorausgesetzter Stil) diesen mit einer Begründung in einem sinnvollen Kommentar, in genau diesem Block, zu dokumentieren.

Negativbeispiel:

public class Matrix {
	public void printMatrixSize(int size) {
		if (size == 0) {
		
		} else {
			System.out.println("Matrix is of size " + (size * size))
		}
	}
}
Hier ist der leere Block des if-Statements ein Problem. Warum passiert nichts für size 0? Warum machen wir dafür keine Ausgabe?
public class Table {
	private rows = 0;
	
	public Table() {

	}
}
Der leere Konstruktor für Table ist unnötig, da wir von der Java-API einen default-Konstruktor bereitgestellt bekommen. Dieser existiert implizit, wenn kein anderer Konstruktor anwesend ist.

Positivbeispiel:

try {
    file.close();
} catch (IOException e) {
    // File cannot be closed, but this is non-critical,
    // as the program can still continue running normally here.
    // No further handling required.
}
Hier ist korrekt dokumentiert, warum der Catch-Block leer bleibt.

Private Konstruktoren

Da private Konstruktoren oft dazu dienen, eine Instanziierung zu verhindern, benötigen sie keinen Kommentar.

public final class InputParseUtilities {

    private InputParseUtilities() {
        // Instantiation for utility class
    }
}
public final class InputParseUtilities {

    private InputParseUtilities() { }
}