Komplexität
🚧 | 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:
Assertions, Duplikate, Gottklasse, Hartcodieren, IO/UI, Reimplementierung, Ungeeigneter Schleifentyp