Unter Code-Smell , Kurz Smell (Deutsch, Schlechter, Geruch), oder dem deutschen Code , steht in der Programmierung ein Konstrukt, welches Gegenstand des Programm-Quelltextes ist. Dem Vernommen nach Stamm Metaphers Geruch von Kent Beck und die langeweile Verbreitung durch das Buch Refactoring von Martin Fowler . Unter dem Begriff soll das Kriterium für das Refactoring beschrieben werden, wie es bei dem anderen Programm der Fall war.
Riechen Bei – Code geht es nicht um Programmfehler , Sondern um funktionierenden Programm – Code, wo aber schlecht strukturiert ist. Das größte Problem ist, dass der Code für den Programmierer schwer verständlich ist, so dass sich Korrekturen und Erweiterungen wiederholen können. Code-Smell kann ein Problem sein .. Andere Probleme als die in der Struktur.Struktur versteckt liegt und ersetzt es.
Weit verbreitete Gerüche
Die folgenden von Martin Fowler und Kent Beck beschreiben Smells [1] sich auf die objektorientierte Programmierung zu beziehen, haben aber folgende Entschuldigungen unter anderem Programmier-Paradigmen.
- Code-Duplizierung
- There same code komt verschachnenen Stellen vor.
- Lange Methode
- Eine Methode (Funktion, Prozeur) ist zu lang.
- Große Klasse
- Eine Klasse ist zu umfangreich, zu viele Instanzvariablen und duplizierten Code. Siehe auch Gottobjekt .
- Lange Parameterliste
- Es wurde ein Objekt-Attribut extrahiert und Methode als Lange Parameterliste übergeben.
- Abweichende Änderungen
- Für eine Änderung muss eine Klasse an mehreren Paaren angepasst werden.
- Schrotkugeln herausoperieren (engl. Schrotflintenchirurgie)
- Das Gegenteil von divergierenden Änderungen: Für eine Änderung müssen weitere Änderungen an der Klasse durchgeführt werden.
- Neid (englisches Feature Neid)
- Eine Methode interessiert sich für die Eigenschaften – insbesondere die Daten – eine andere Klasse als auch eine eigene Klasse.
- Datum Klumpen
- Ihre Gruppe von Objekten wird Ihre eigenen ergeben: als Felder in nur Klassen und als Parameter schnellere Methoden.
- Neigung zu elementaren Typen (engl. Primitive Obsession)
- Die Typen wurden sowohl für den Zweck der Klasse als auch für den Zweck des aussagebeköpfigen Geistes verwendet.
- Case-Anweisungen im Objektorientierungscode
- Switch-Case-Anweisungen wurden verwendet, um Polymorphismus zu umgehen.
- Parallele Vererbungshierarchien
- Sie befinden sich in der Mitte dieser Hierarchie, in der Sie eine andere Klasse finden können.
- Faule Klasse
- Diese Klasse ist sehr gut, über Ihre Existenz zu rechtfertigen.
- Spekulative Allgegenwart
- Alle Weisen sprachen mit Spezialfällen, für die nicht gesorgt wurde; Solch allgemeiner Code braucht in der Pflege, ohne dass etwas getan wird.
- Temporäre Felder
- Ein Objekt verwechselt eine Variable nur unter bestimmten Umständen – die Code ist schwer zu verstehen und zu Debuggen , weil das Feld nicht verwendet wird.
- Nachrichtenketten
- Das Gesetz von Demeter wird verletzt.
- Mittlerer Mann (Vermittler)
- Jede Klasse delegiert alle Methoden an eine andere Klasse.
- Unangebrachte Intimität
- Zwei Klassen haben zu enge Verflechtungen miteinander.
- Alternative Klassen mit verschiedenen Typen
- Schwören Sie Klassen, bitte zögern Sie nicht, uns zu kontaktieren.
- Unvollständige Bibliotheksklasse
- Eine Klasse einer Programmierbibliothek benötigt Erweiterungen, um einen geeigneten Bereich zu verwenden.
- Datum Klasse
- Klassen mit Bereichen und Zugangsmethoden ohne Funktionalität.
- Ausgeschlagenes Erbe
- Unter Klassen Brauch Methoden und Daten gar nicht sterben, stirbt się von der Oberklasse Erben (siehe auch Liskovsches Substitutionsprinzip )
- Kommentare
- Kommentar erleichtert im Allgemeinen die Verständlichkeit. Kommen wir zu einem bestimmten Zeitpunkt, wo der Code schlecht ist. Kommentieren Sie dies als separaten Link.
Weitere Smells und Programmier-Anti-Pattern
Neben von Fowler erwärmte Smells gibt es oder eine Reihe von Code-Smells, die oft ein Programming-Anti-Pattern erhalten:
- Nichtssagerender Name (Engl. Unkommunikativer Name)
- Name, keine Angabe von Eigenschaften oder Verwendung des Benannten. Außendienstliche Namur sind für das Verständnis von Programmcode.
- Redundanter Code
- Ein Stück Code, der nicht mehr verdorben wird.
- Unzüchtige Belichtung (engl.)
- Interne Details einer Unterrichtseinstellung unnotwendig Teil ihrer Schnittstelle nach außen.
- Konstruierte Komplexität (engl.)
- Erzwunge Verwendung von Entwürfen , wo einfachere Design auswählen würde.
- Habe lange Namen
- Die Verwendung von Architektur- oder Designdateien im Namen von Klassen oder Methoden.
- Zu kurze Namen
- Die Verwendung von „x“, „i“ von Abkürzungen. There Name Eine Variable soll ihre Funktion beschreiben.
- Über-Rückruf
- Ein Rückruf , wo Versucht, alles zu tun.
- Komplexe Vernachlässigung
- Verhandlungen, die den Nutzen der Codeblocks beseitigen sollen.
- Tiefe Verschachtelungen
- Schockiert wenn / else / for / do / while-Statements. Sie machen den Code unlesbar.
Architektur-Smells
Neben von Beck und Fowler Adressat Smells im Quelltext von Anwendungen gehört auch in das Architektursystem von Software Systems auf. Beschreiben Sie diese Wurden von Stefan Roock und Martin Lippert.
Zu den Architektur-Smells zählen unter Anderem:
- Zyklische Nutzungsbeschränkungen zwischen Paketen, Schichten und Subsystemen
- Größe und Aufteilung der Pakete oder Subsysteme
Siehe auch
- Softwareerosion
Literatur
- Martin Fowler: Refactoring. Wer ist der Designer der Software ? Addison Wesley, München 2000, ISBN 3-8273-1630-8 , S. 67-82 (englisch: Refactoring. Verbesserung der Gestaltung des bestehenden Code . Übersetzte von Bernd Kahlbrandt).
Weblinks
- Refactoring Eine überblicksarbeit, im imschnitt 2.3 unter dem Titel „Bad Smells“ single-wised Smells deklarativ.
Einzelstunden
- Hochspringen↑ Martin Fowler: Refactoring. Wer ist der Designer der Software ? Addison Wesley, München 2000, ISBN 3-8273-1630-8 , S. 67-82 (englisch: Refactoring. Verbesserung der Gestaltung des bestehenden Code . Übersetzte von Bernd Kahlbrandt).