Was ist die Kernvoraussetzung dafür dass Code als Clean Code bezeichnet werden kann?
Code gilt als clean wenn er einem inhärenten Wertesystem folgt dessen Werte und Attitüden in ihrer Gesamtheit die Verantwortung gegenüber sich selbst dem Käufer und dem Kunden unterstützen.
Welche drei zentralen Fragen sollte ein aussagekräftiger Variablenname beantworten?
Ein Name sollte die Existenzberechtigung (Warum existiert sie?) die bereitgestellte Funktionalität (Was leistet sie?) und die Verwendung (Wie wird sie genutzt?) klären.
Was versteht man unter dem Begriff Software-Rot oder Software-Erosion?
Darunter versteht man die Verschlechterung der Softwarequalität durch reduzierte Ausdruckskraft erschwerte Wartbarkeit zeitintensive Änderungen sowie die Anhäufung von Fehlern und Architekturverletzungen.
Welche psychologischen oder organisatorischen Gründe führen laut Vorlesung zu irresponsible Code?
Gründe sind Zeitmangel die Einstellung Probleme später zu beheben fehlende Fähigkeiten mangelnde Konzentration oder generell unverantwortliches Handeln.
Welche Verhaltensweisen kennzeichnen einen professionell agierenden Software-Entwickler?
Professionelle Entwickler passen Pläne an reflektieren intensiv praktizieren und trainieren ihre Fähigkeiten und sind stets vorbereitet durch Werkzeuge und Dokumentationskenntnis.
Warum ist die Verwendung von Variablen wie int d für die Zeitmessung problematisch?
Solche Namen erfüllen nicht die Kriterien für Existenz Funktionalität und Nutzung wohingegen int elapsedTimeInDays die Bedeutung sofort klarstellt.
Welche Regel gilt für die Benennung von Konzepten innerhalb eines Projekts?
Es sollte genau ein Begriff pro Konzept verwendet werden um Unklarheiten durch Synonyme wie getAllUsers fetchAllUsers oder retrieveAllUsers zu vermeiden.
Was ist die primäre Regel bezüglich der Aufgabenstellung einer Funktion?
Eine Funktion sollte genau eine einzige Aufgabe (One Duty) haben und diese vollständig erfüllen.
Warum sollten Kodifizierungen oder Präfixe wie m für Member-Variablen vermieden werden?
Sie erschweren das Verständnis des Kontexts und stellen unnötigen mentalen Ballast dar da moderne IDEs die Herkunft von Variablen bereits visualisieren.
Was besagt das Prinzip No mental mapping im Kontext der Namensgebung?
Namen müssen so klar sein dass der Programmierer sie nicht im Kopf übersetzen muss da Code sonst bereits nach kurzer Zeit unverständlich wird.
Warum ist getAddressAttribute(String add) besser als getAddrAttr(String add)?
Man sollte aussprechbare Namen verwenden da dies die Kommunikation erleichtert und moderne IDEs den Tippaufwand ohnehin minimieren.
Was versteht man unter einem Side Effect bei Funktionen?
Ein Seiteneffekt liegt vor wenn eine Funktion neben ihrem Rückgabewert eine zusätzliche versteckte Aktion ausführt wie zum beispiel das Versenden einer Nachricht in einer Getter-Methode.
Welche Regel gilt für das Abstraktionsniveau innerhalb einer Funktion?
Innerhalb einer Funktion sollte nur eine einzige Abstraktionsebene verwendet werden um die Lesbarkeit und Struktur zu wahren.
Was ist die Empfehlung für die Anzahl von Funktionsparametern?
Funktionen sollten so wenig Parameter wie möglich haben da viele Parameter oft darauf hindeuten dass die Funktion mehr als eine Aufgabe erfüllt.
Wie kann man eine Funktion mit vielen Parametern wie paintCircle(x y radius surface) optimieren?
Man kann zusammengehörige Parameter in ein Objekt überführen zum beispiel paintCircle(Circle currentCircle Color surface).
Warum ist Error-Handling eine eigene Aufgabe für eine Funktion?
Fehlerbehandlung vermischt sich oft mit der Geschäftslogik was die Lesbarkeit verschlechtert daher sollte sie idealerweise in separate Funktionen ausgelagert werden.
Warum sollte man lieber Exceptions werfen anstatt NULL zurückzugeben?
Das Werfen von Exceptions verhindert dass der aufrufende Code durch NULL-Werte abbricht und trennt die Fehlerbehandlung klar von der Geschäftslogik.
Was ist ein Special Case Object und welchen Vorteil bietet es?
Es ist ein Objekt das ein definiertes Standardergebnis liefert (zum beispiel Collections.emptyList()) um den restlichen Code nicht durch Fehler oder NULL-Prüfungen zu unterbrechen.
Welchen Rat gibt Clean Code bezüglich Kommentaren in schlechtem Code?
Man sollte schlechten Code nicht kommentieren sondern ihn direkt refactoren und fixen.
Wann sind Kommentare laut Vorlesung sinnvoll oder zulässig?
Kommentare sind sinnvoll für Copyright-Hinweise oder wenn sie die Ausdruckskraft erhöhen die nicht durch Code allein erreicht werden kann.
Was wird als Garbage in Kommentaren bezeichnet?
Veralteter Code der auskommentiert wurde oder redundante Kommentare die keinen Mehrwert bieten da dafür die Versionsverwaltung genutzt werden sollte.
Wie sollten Klassen intern organisiert sein?
Klassen sollten nach dem Step-Down-Prinzip organisiert und in Sektionen gruppiert sein wobei öffentliche Methoden vor privaten Methoden stehen.
Warum stehen öffentliche Methoden in einer Klasse idealerweise vor den privaten?
Öffentliche Methoden definieren die Schnittstelle und das was man nutzen kann während private Details der Implementierung dienen und oft weniger abstrakt sind.
Was bedeutet High Cohesion (hohe Kohäsion) auf Klassenebene?
Es bedeutet dass alle Elemente innerhalb einer Klasse eng zusammengehören und eine gemeinsame logische Einheit bilden.