<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://mletkin.net/index.php?action=history&amp;feed=atom&amp;title=Code_Smell</id>
	<title>Code Smell - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mletkin.net/index.php?action=history&amp;feed=atom&amp;title=Code_Smell"/>
	<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Code_Smell&amp;action=history"/>
	<updated>2026-05-20T03:12:59Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MimiPedia</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://mletkin.net/index.php?title=Code_Smell&amp;diff=193&amp;oldid=prev</id>
		<title>Ullrich am 28. November 2024 um 10:04 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Code_Smell&amp;diff=193&amp;oldid=prev"/>
		<updated>2024-11-28T10:04:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 28. November 2024, 10:04 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Zeile 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;IT&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Quality&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die erste Erwähnung des Begriffs &amp;quot;code smell&amp;quot; findet sich in Martin Fowlers Buch &amp;quot;Refactoring&amp;quot;. Er verwendet ihn&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Die erste Erwähnung des Begriffs &amp;quot;code smell&amp;quot; findet sich in Martin Fowlers Buch &amp;quot;Refactoring&amp;quot;. Er verwendet ihn&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;dort als es darum geht die Code-Stellen zu identifizieren an denen Refactoring erforderlich ist. Fowler bleibt dabei&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;dort als es darum geht die Code-Stellen zu identifizieren an denen Refactoring erforderlich ist. Fowler bleibt dabei&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ullrich</name></author>
	</entry>
	<entry>
		<id>https://mletkin.net/index.php?title=Code_Smell&amp;diff=190&amp;oldid=prev</id>
		<title>Ullrich: Die Seite wurde neu angelegt: „Category:IT Die erste Erwähnung des Begriffs &quot;code smell&quot; findet sich in Martin Fowlers Buch &quot;Refactoring&quot;. Er verwendet ihn dort als es darum geht die Code-Stellen zu identifizieren an denen Refactoring erforderlich ist. Fowler bleibt dabei ausgesprochen vage, aber die Andeutung auf verunreinigte Baby-Windeln erzeugt den starken Eindruck, daß es sich hier um ausgesprochen unangenehme Gerüche handeln muß...  Ein Code Smell ist eine Stelle im Code…“</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Code_Smell&amp;diff=190&amp;oldid=prev"/>
		<updated>2024-11-28T10:02:05Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&lt;a href=&quot;/index.php?title=Kategorie:IT&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Kategorie:IT (Seite nicht vorhanden)&quot;&gt;Category:IT&lt;/a&gt; Die erste Erwähnung des Begriffs &amp;quot;code smell&amp;quot; findet sich in Martin Fowlers Buch &amp;quot;Refactoring&amp;quot;. Er verwendet ihn dort als es darum geht die Code-Stellen zu identifizieren an denen Refactoring erforderlich ist. Fowler bleibt dabei ausgesprochen vage, aber die Andeutung auf verunreinigte Baby-Windeln erzeugt den starken Eindruck, daß es sich hier um ausgesprochen unangenehme Gerüche handeln muß...  Ein Code Smell ist eine Stelle im Code…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:IT]]&lt;br /&gt;
Die erste Erwähnung des Begriffs &amp;quot;code smell&amp;quot; findet sich in Martin Fowlers Buch &amp;quot;Refactoring&amp;quot;. Er verwendet ihn&lt;br /&gt;
dort als es darum geht die Code-Stellen zu identifizieren an denen Refactoring erforderlich ist. Fowler bleibt dabei&lt;br /&gt;
ausgesprochen vage, aber die Andeutung auf verunreinigte Baby-Windeln erzeugt den starken Eindruck, daß es sich&lt;br /&gt;
hier um ausgesprochen unangenehme Gerüche handeln muß...&lt;br /&gt;
&lt;br /&gt;
Ein Code Smell ist eine Stelle im Code mit bestimmten Eigenschaften, an denen sie zu erkennen ist. Diese&lt;br /&gt;
Eigenschaften bilden den bisweilen charakteristischen Geruch. Eine Methode mit einer langen Parameterliste ist ein Beispiel&lt;br /&gt;
dafür, mit jedem weiteren Parameter wird der Geruch intensiver.&lt;br /&gt;
&lt;br /&gt;
Viele Code Smells haben eine Ursache. Eine lange Parameterliste zum Beispiel kann das Ergebnis sukzessiver&lt;br /&gt;
Verallgemeinerung sein. Die ursprüngliche Methode hatte vielleicht nur zwei Parameter, aber mit jeder Anpassung&lt;br /&gt;
an die geänderten Anforderungen kam ein neuer Parameter hinzu. Nicht jeder Smell hat eine klare Ursache, für&lt;br /&gt;
manche Smells gibt es mehrere mögliche Ursachen. In aller Regel ist es sinnvoll die Ursache zu ergründen, denn&lt;br /&gt;
unterschiedliche Ursachen können unterschiedliche Refactoring-Maßnahmen nahelegen. Hier endet ein Zipfel der&lt;br /&gt;
Analogie, denn Baby-Kacke beseitigt man normalerweise immer auf die gleiche Weise...&lt;br /&gt;
&lt;br /&gt;
Nicht alle Gerüche sind per se unangenehm. Fowler beschreibt zum Beispiel den Geruch von Kommentaren als&lt;br /&gt;
angenehm – nachgerade verführerisch angenehm, denn fehlerhafte Kommentaren können Probleme – und die&lt;br /&gt;
damit verbundenen Gerüche – verdecken.&lt;br /&gt;
&lt;br /&gt;
Ich strecke die Analogie gerne in eine andere Richtung: Verschiedene Entwickler reagieren auf verschiedene&lt;br /&gt;
Gerüche unterschiedlich. Dem einen wird bei einer 10-Zeilen-Methode übel, der andere fühlt sich vom&lt;br /&gt;
100-Zeilen-Geruch noch nicht belästigt. Und wieder scheinen den Duft von Methoden um so angenehmer zu emfinden,&lt;br /&gt;
je länger sie wird.&lt;br /&gt;
&lt;br /&gt;
Es ist Aufgabe des Teams eine Umgebung zu schaffen die einen vernünftigen Kompromiß bringt.&lt;br /&gt;
Es wäre falsch, ganz auf die Beseitigung von Code-Smells zu verzichten. Ebenso falsch aber wäre es,&lt;br /&gt;
die Beseitigung bestimmter Smells zu erzwingen –- um bei der Analogie zu bleiben: der Geruch von&lt;br /&gt;
Desinfektionsmittel kann durchaus unangenehm sein.&lt;br /&gt;
&lt;br /&gt;
Wie im wirklichen Leben, können Gerüche auf tödliche Gefahren hinweisen -– der Geruch von Bittermandel ist nicht&lt;br /&gt;
unbedingt unangenehm, eine Zyanid-Vergiftung ist es aber auf jeden Fall... Doch nicht hinter jedem Geruch steckt ein&lt;br /&gt;
verrotteter Fäulnisherd, der die Anwendung in eine einsturzgefährdete Todesfalle verwandelt. Manchmal handelt&lt;br /&gt;
es sich lediglich um einen ungewohnten Eigengeruch, an dessen Aroma man sich erst gewöhnen muß.&lt;br /&gt;
&lt;br /&gt;
Nachdem wir nun –- dem Duft der Analogie -– folgend um das eigentliche Thema herummäandert sind, bringen wir&lt;br /&gt;
die Sache mal auf den Punkt:&lt;br /&gt;
* Ein Code Smell ist der Hinweis auf eine Code-Stelle, die Beachtung verdient&lt;br /&gt;
* Ein Code-Smell ist nicht per se schlecht&lt;br /&gt;
* Ein Code Smell kann der Hinweis auf eine Schwachstelle sein, die zu ernsthaften Problemen führen kann&lt;br /&gt;
* Code-Smells müssen in der Regel mit Rücksicht auf die Ursache behandelt werden&lt;br /&gt;
Nachdem wir nun eine Vorsetllung davon haben was einen Code Smell ausmacht, können wir uns nun den&lt;br /&gt;
konkreten Beispielen befassen...&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Beliebte&amp;quot; Code Smells...&lt;br /&gt;
* Shot Gun Surgery (Martin Fowler)&lt;br /&gt;
* Speculative Generalization (Martin Fowler)&lt;br /&gt;
* Zu viele Zeilen in der Methoden oder Klasse&lt;br /&gt;
* Zu viele (mehr als drei) formale Parameter in der Methoden-Signatur&lt;br /&gt;
* Ungenutzte Felder, Parameter, Methoden, Code etc.&lt;br /&gt;
* Explizites type casting&lt;br /&gt;
* Unangemessener Gebrauch von null&lt;br /&gt;
* Auto-unboxing wegen unnötiger Verwendung von Wrapper-Klassen um int, long, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nachgedanke&lt;br /&gt;
:Worte wie &amp;quot;eigentlich&amp;quot; und &amp;quot;wirklich&amp;quot; sind code smells der natürlichen Sprache.&lt;br /&gt;
:Sie riechen nach &amp;quot;Ideologie&amp;quot;.&lt;br /&gt;
:Sie riechen nach &amp;quot;mir sind die rational-logischen Argumente ausgegangen&amp;quot;&lt;/div&gt;</summary>
		<author><name>Ullrich</name></author>
	</entry>
</feed>