Komplexität: Unterschied zwischen den Versionen

Aus Programmieren-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 21: Zeile 21:
     return false;
     return false;
</syntaxhighlight>  
</syntaxhighlight>  
Der Ausdruck ist hier unnötig komplex und kann vereinfacht werden. <syntaxhighlight inline>this.sold == false</syntaxhighlight> entspricht dem Ausdruck <syntaxhighlight inline>!this.sold</syntaxhighlight> (<syntaxhighlight inline>!</syntaxhighlight> invertiert <syntaxhighlight inline>this.sold</syntaxhighlight>, entsprechend ist der Ausdruck nur wahr, wenn <syntaxhighlight inline>this.sold</syntaxhighlight> false ist).
Der Ausdruck ist hier unnötig komplex und kann vereinfacht werden. <syntaxhighlight lang="Java" inline>this.sold == false</syntaxhighlight> entspricht dem Ausdruck <syntaxhighlight lang="Java" inline>!this.sold</syntaxhighlight> (<syntaxhighlight lang="Java" inline>!</syntaxhighlight> invertiert <syntaxhighlight lang="Java" inline>this.sold</syntaxhighlight>, entsprechend ist der Ausdruck nur wahr, wenn <syntaxhighlight lang="Java" inline>this.sold</syntaxhighlight> false ist).
Entsprechend ist <syntaxhighlight inline>this.price > 0</syntaxhighlight> eine vereinfachte Variante von <syntaxhighlight inline>!(this.price <= 0)</syntaxhighlight>.
Entsprechend ist <syntaxhighlight lang="Java" inline>this.price > 0</syntaxhighlight> eine vereinfachte Variante von <syntaxhighlight lang="Java" inline>!(this.price <= 0)</syntaxhighlight>.
|positiv=<syntaxhighlight lang="Java">
|positiv=<syntaxhighlight lang="Java">
boolean isValid() {
boolean isValid() {

Version vom 28. April 2024, 18:06 Uhr

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

Beschreibung

Codestellen sollten so wenig komplex wie möglich gestaltet werden. Meißt lässt sich aber Code erst später in der Entwicklung vereinfachen, wenn die funktionalität ausgereift ist und demnach keine großen Änderungen an dem Quellcode stattfinden. Diese Codestellen sollten spätestens dann vereinfacht werden und die Lesbarkeit zu verbessern. Sind im Quellcode zum Schluss noch solche Codestellen vorhanden, sprechen wir von unnötiger Komplexität.


Unter Komplexität (im Abzug dann "unnötige Komplexität") unterscheiden wir unter zwei Kategorien - Klein und Groß.

Kleine unnötige Komplexität bezeichnet eine Codestelle die innerhalb einer Methode (oder die Methode selbst) zu komplex gestaltet wurde. Dazu zählen unter anderem Ausdrücke in if-Statements, die nicht vereinfacht wurden.

Große unnötige Komplexität bezeichnet dahingegen eine Codestelle, die mehrere Methoden oder sogar Klassenübergreifend ist, die weniger kompliziert hätte modelliert werden können.

Beide Kategorien werden als eigene Richtlinie behandelt und geben demnach seperat Abzug.


Negativbeispiel

boolean isValid() {
    if (this.sold == false && !(this.price <= 0)) {
        return true;
    }
    return false;

Der Ausdruck ist hier unnötig komplex und kann vereinfacht werden. this.sold == false entspricht dem Ausdruck !this.sold (! invertiert this.sold, entsprechend ist der Ausdruck nur wahr, wenn this.sold false ist). Entsprechend ist this.price > 0 eine vereinfachte Variante von !(this.price <= 0).

Positivbeispiel

boolean isValid() {
    return !this.sold && this.price > 0;
}

Hier wurde der Ausdruck entsprechend vereinfacht, sodass er leichter zu lesen und verstehen ist.


Wenn du diese Seite interessant fandest, findest du hier noch mehr Seite(n) dazu:
AssertionsDuplikateGottklasseHartcodierenIO/UIReimplementierungUngeeigneter SchleifentypVerschachtelungstiefe