Komplexität: Unterschied zwischen den Versionen

Aus Programmieren-Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 30: Zeile 30:
Hier wurde der Ausdruck entsprechend vereinfacht, sodass er leichter zu lesen und verstehen ist.
Hier wurde der Ausdruck entsprechend vereinfacht, sodass er leichter zu lesen und verstehen ist.
|weiterlesen=Ja
|weiterlesen=Ja
|seite=Assertions, Duplikate, Gottklasse, Hartcodieren, IO/UI, Reimplementierung, Ungeeigneter Schleifentyp, Verschachtelungstiefe
|seite=Assertions, Duplikate, Gottklasse, Hartcodieren, IO/UI, Reimplementierung, Ungeeigneter Schleifentyp
}}
}}

Version vom 2. Oktober 2024, 14:37 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 Schleifentyp