Geruch (Programmierung)

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

  1. 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).