<?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=Der_Weg_zum_guten_Code</id>
	<title>Der Weg zum guten Code - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://mletkin.net/index.php?action=history&amp;feed=atom&amp;title=Der_Weg_zum_guten_Code"/>
	<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;action=history"/>
	<updated>2026-05-13T17:15:50Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in MimiPedia</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=200&amp;oldid=prev</id>
		<title>Ullrich: /* Arbeitstechniken */</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=200&amp;oldid=prev"/>
		<updated>2024-11-28T10:34:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Arbeitstechniken&lt;/span&gt;&lt;/span&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:34 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-l166&quot;&gt;Zeile 166:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 166:&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;* [[Boy Scout Principle]]&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;* [[Boy Scout Principle]]&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;* Code – fremden und eigenen – lesen und reflektieren&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;* Code – fremden und eigenen – lesen und reflektieren&lt;/div&gt;&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;* &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zuhören&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;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zuhören&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;* Diskussion über Code&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;* Diskussion über Code&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;* Code-Reviews&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;* Code-Reviews&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=Der_Weg_zum_guten_Code&amp;diff=199&amp;oldid=prev</id>
		<title>Ullrich: /* Best Practice */</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=199&amp;oldid=prev"/>
		<updated>2024-11-28T10:33:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Best Practice&lt;/span&gt;&lt;/span&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:33 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-l127&quot;&gt;Zeile 127:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 127:&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;** [[Petting Zoo]] - keeping code that is not worth it&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;** [[Petting Zoo]] - keeping code that is not worth it&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;* vermeide [[Code Smell]]s&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;* vermeide [[Code Smell]]s&lt;/div&gt;&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;* Refactoring&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;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;führe regelmäßig &lt;/ins&gt;Refactoring &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;durch&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;* Verwende eine durchgehende Nomenklatur&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;* Verwende eine durchgehende Nomenklatur&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;* Stick to the Coding Guidelines&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;* Stick to the Coding Guidelines&lt;/div&gt;&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-l133&quot;&gt;Zeile 133:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 133:&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;* Verwende für Kommentare und Bezeichner nur natürliche Sprachen die Du auch beherrschst&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;* Verwende für Kommentare und Bezeichner nur natürliche Sprachen die Du auch beherrschst&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;:actualValue für den aktuellen Wert (richtig ist current)&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;:actualValue für den aktuellen Wert (richtig ist current)&lt;/div&gt;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* &lt;/del&gt;bound als Übersetzung für &amp;quot;verknüpft&amp;quot; (richtig ist linked)&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;:&lt;/ins&gt;bound als Übersetzung für &amp;quot;verknüpft&amp;quot; (richtig ist linked)&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;* Don&amp;#039;t state the obvious:&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;* Don&amp;#039;t state the obvious:&lt;/div&gt;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/del&gt;Logger logger = LoggerFactory.obtainLogger();&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{java|code=&lt;/ins&gt;&lt;/div&gt;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/del&gt;String stringToBeLogged = &amp;quot;log: logging start of action Foo&amp;quot;;&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;Logger logger = LoggerFactory.obtainLogger();&lt;/div&gt;&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/del&gt;logger.log(stringToBeLogged);&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;String stringToBeLogged = &amp;quot;log: logging start of action Foo&amp;quot;;&lt;/div&gt;&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;* toString() ist kein Serialisierungs-Tool&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;logger.log(stringToBeLogged);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&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;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{java|&lt;/ins&gt;toString()&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}} &lt;/ins&gt;ist kein Serialisierungs-Tool&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;* zu viel von etwas ist selten gut:&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;* zu viel von etwas ist selten gut:&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;: &amp;lt;q&amp;gt;If you know what you&amp;#039;re doing, three layers is enough; if you don&amp;#039;t, even seventeen levels won&amp;#039;t help.&amp;lt;/q&amp;gt;&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;: &amp;lt;q&amp;gt;If you know what you&amp;#039;re doing, three layers is enough; if you don&amp;#039;t, even seventeen levels won&amp;#039;t help.&amp;lt;/q&amp;gt;&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=Der_Weg_zum_guten_Code&amp;diff=198&amp;oldid=prev</id>
		<title>Ullrich: /* Best Practice */</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=198&amp;oldid=prev"/>
		<updated>2024-11-28T10:27:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Best Practice&lt;/span&gt;&lt;/span&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:27 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-l104&quot;&gt;Zeile 104:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 104:&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;* verwende Architektur-Pattern&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;* verwende Architektur-Pattern&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;* verwende das Schichten-Modell&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;* verwende das Schichten-Modell&lt;/div&gt;&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;* [http://clean-code-developer.de/die-grade/roter-grad/#Integration_Operation_Segregation_Principle_IOSP IOSP]&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;– Integration Operation Segregation Principle&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;* &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Integration Operation Segregation Principle (nach unten scrollen: &lt;/ins&gt;[http://clean-code-developer.de/die-grade/roter-grad/#Integration_Operation_Segregation_Principle_IOSP IOSP]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;)&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;* verwende Design-Pattern (hier einige GoF-Pattern, die ich besonders häufig verwende)&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;* verwende Design-Pattern (hier einige GoF-Pattern, die ich besonders häufig verwende)&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;** Factory Method&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;** Factory Method&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=Der_Weg_zum_guten_Code&amp;diff=191&amp;oldid=prev</id>
		<title>Ullrich am 28. November 2024 um 10:02 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=191&amp;oldid=prev"/>
		<updated>2024-11-28T10:02:54Z</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:02 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-l126&quot;&gt;Zeile 126:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 126:&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;** Stellvertreter-Typen – Statt einen Datentyp zu definieren, existierende Klassen (besonders String) mißbrauchen&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;** Stellvertreter-Typen – Statt einen Datentyp zu definieren, existierende Klassen (besonders String) mißbrauchen&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;** [[Petting Zoo]] - keeping code that is not worth it&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;** [[Petting Zoo]] - keeping code that is not worth it&lt;/div&gt;&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;* vermeide Code &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smells(see page 18)&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;* vermeide &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/ins&gt;Code &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smell]]s&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;* Refactoring&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;* Refactoring&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;* Verwende eine durchgehende Nomenklatur&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;* Verwende eine durchgehende Nomenklatur&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=Der_Weg_zum_guten_Code&amp;diff=45&amp;oldid=prev</id>
		<title>Ullrich: /* Regeln */</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=45&amp;oldid=prev"/>
		<updated>2021-04-22T14:36:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Regeln&lt;/span&gt;&lt;/span&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 22. April 2021, 14:36 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-l71&quot;&gt;Zeile 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 71:&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;* ISP – Interface Segregation Principle&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;* ISP – Interface Segregation Principle&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;* Stick to the Paradigm&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;* Stick to the Paradigm&lt;/div&gt;&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;* Tell don&amp;#039;t ask ([https://martinfowler.com/bliki/TellDontAsk.html Martin Fowler&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;], [https://pragprog.com/articles/tell-dont-ask Pragmatic Bookshelf&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;* Tell don&amp;#039;t ask ([https://martinfowler.com/bliki/TellDontAsk.html Martin Fowler])&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;br/&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;br/&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;Was ist mit SOLID?&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;Was ist mit SOLID?&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=Der_Weg_zum_guten_Code&amp;diff=44&amp;oldid=prev</id>
		<title>Ullrich am 22. April 2021 um 14:16 Uhr</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=44&amp;oldid=prev"/>
		<updated>2021-04-22T14:16:09Z</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 22. April 2021, 14:16 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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Java]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;[[Category:Quality]]&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;[[Category:Quality]]&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;Um entscheiden zu können welcher [https://xkcd.com/844/ Weg zum guten Code] führt, muß man festlegen was&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;Um entscheiden zu können welcher [https://xkcd.com/844/ Weg zum guten Code] führt, muß man festlegen was&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=Der_Weg_zum_guten_Code&amp;diff=43&amp;oldid=prev</id>
		<title>Ullrich: Die Seite wurde neu angelegt: „Category:Java Category:Quality Um entscheiden zu können welcher [https://xkcd.com/844/ Weg zum guten Code] führt, muß man festlegen was &#039;&#039;guten&#039;&#039; Co…“</title>
		<link rel="alternate" type="text/html" href="https://mletkin.net/index.php?title=Der_Weg_zum_guten_Code&amp;diff=43&amp;oldid=prev"/>
		<updated>2021-04-22T14:13:21Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&lt;a href=&quot;/index.php?title=Kategorie:Java&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Kategorie:Java (Seite nicht vorhanden)&quot;&gt;Category:Java&lt;/a&gt; &lt;a href=&quot;/index.php?title=Kategorie:Quality&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Kategorie:Quality (Seite nicht vorhanden)&quot;&gt;Category:Quality&lt;/a&gt; Um entscheiden zu können welcher [https://xkcd.com/844/ Weg zum guten Code] führt, muß man festlegen was &amp;#039;&amp;#039;guten&amp;#039;&amp;#039; Co…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Java]]&lt;br /&gt;
[[Category:Quality]]&lt;br /&gt;
Um entscheiden zu können welcher [https://xkcd.com/844/ Weg zum guten Code] führt, muß man festlegen was&lt;br /&gt;
&amp;#039;&amp;#039;guten&amp;#039;&amp;#039; Code von schlechtem unterscheidet. Die Erkenntnis, daß es nicht gleichgültig ist, wie Code beschaffen&lt;br /&gt;
ist wurde ja offensichtlich schon gewonnen -- andernfalls wäre die Suche eine sinnlose.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Gut&amp;quot; ist der Code, wenn er über die blanke Funktionalität hinaus weitere Eigenschaften erfüllt. Über diese&lt;br /&gt;
nichtfunktionalen Eigenschaften giebt es eine große Literatur, die Worte &amp;quot;Qualiät&amp;quot; und &amp;quot;Architektur&amp;quot; fallen einem in diesem&lt;br /&gt;
Zusammenhang ein. Dabei geht es aber in der Regel um die Software-Qualität, also die Qualität des gesamten Erzeugnisses&lt;br /&gt;
im Zusammenspiel mit der Umgebung in der es betrieben wird.&lt;br /&gt;
&lt;br /&gt;
Diese Seite engt den Blick ganz bewußt auf den &amp;quot;Code&amp;quot; ein. Damit ist der Quelltext gemeint, aus dem das Erzeugnis&lt;br /&gt;
hergestellt wird. Noch genauer geht es dabei um den Programm-Code -- wann kann man diesen als &amp;quot;gut&amp;quot; bezeichnen?&lt;br /&gt;
&lt;br /&gt;
Für den Entwickler -- den Einzigen, der ursächlich an der [https://xkcd.com/1695/ Code-Qualität] interessiert ist --&lt;br /&gt;
muß der Code wartbar, erweiterbar und änderbar sein. Der Grad &amp;#039;&amp;#039;dieser&amp;#039;&amp;#039; Eigenschaften bestimmt die Güte des Codes. Die Optimierung dieser Eigenschaften steht bisweilen im Widerspruch zu anderen Eigenschaften -- insbesondere der Performance.&lt;br /&gt;
Das Abwägen ist Aufgabe des Architekten und liegt außerhalb des Scope dieses Textes; hier geht es ausschließlich darum&lt;br /&gt;
die Code-Qualität zu verbessern.&lt;br /&gt;
&lt;br /&gt;
Es giebt eine unüberschaubare Fülle an Regeln, Tipps, Techniken und Ideologien zum Thema. Nahezu jeder Entwickler,&lt;br /&gt;
den man zum Thema Code-Qualität befragt weiß einen anderen Strauß aus seinen Erfahrungen zu binden.&lt;br /&gt;
&lt;br /&gt;
Aus dem Wunsch heraus, einen Überblick über die verwirrende Vielzahl von Begriffe, Ansichten und Ansätzen zu gewinnen&lt;br /&gt;
ist die untige Sammlung entstanden. Sie ist weder vollständig noch verbindlich, bietet dem interessierten Leser aber&lt;br /&gt;
eine Basis für die weitere Erkundung der Materie. Es wird zwar der Versuch eine Einteilung gemacht um den Überblick zu&lt;br /&gt;
verbessern, aber es wird versucht zu vermeiden eine Wertung vorzunehmen.&lt;br /&gt;
&lt;br /&gt;
= Leitgedanken =&lt;br /&gt;
Ein Leitgedanke zu dem es bislang noch kein vernünftiges Gegenargument giebt ist folgender:&lt;br /&gt;
{{quotation|Die Qualität von Code bemißt sich daran, wie leicht er zu lesen ist}}&lt;br /&gt;
Über die Frage, wie &amp;quot;lesbarer&amp;quot; Code konkret auszusehen hat giebt es allerdings unterschiedliche Auffassungen.&lt;br /&gt;
Daraus kann man auch ableiten, daß bessere Lesbarkeit nicht automatisch zu besserer Änderbarkeit führt.&lt;br /&gt;
Sie führt aber dazu, daß der Code besser zu verstehen ist, daher besser bearbeitet werden kann und damit besser&lt;br /&gt;
zu warten ist. &amp;quot;Lesbarkeit&amp;quot; bleibt ein Kernzeil des Qualitäts-Suchenden und er wird sich die Frage bei jeder Code-Zeile&lt;br /&gt;
zu stellen haben.&lt;br /&gt;
&lt;br /&gt;
{{quotation|Die Grenzen meiner Sprache sind die Grenzen meiner Welt}}&lt;br /&gt;
&lt;br /&gt;
Im Kontext der Code-Qualität bedeutet das: So klar meine Sprache ist, so klar ist mein Code. Computer-Sprachen&lt;br /&gt;
(formale Sprachen überhaupt) lassen keine Mehrdeutigkeiten zu. Wird der gleiche Code bei mehrfacher Ausführung&lt;br /&gt;
unterschiedlich interpretiert, so ist das ein Fehler. Eine klare Ausdrucksweise, als Ausdruck klarer Gedanken ist&lt;br /&gt;
eine Grundvoraussetzung klaren Programm-Codes.&lt;br /&gt;
&lt;br /&gt;
{{quotation|Separation of Concerns}}&lt;br /&gt;
&lt;br /&gt;
ToDo: Erklärung wie die Idee von Dijkstraa als Leitgedanke zu verstehen ist&lt;br /&gt;
&lt;br /&gt;
= Regeln =&lt;br /&gt;
Eine Regel ist eine Richtlinie die vermittelt was man tun – oder lassen – sollte, aber nicht vorgeben wie man das erreicht.&lt;br /&gt;
Regeln weisen die Richtung, bestimmen den Generalkurs; bieten aber wenig Hilfe bei der Überwindung konkreter Hindernisse.&lt;br /&gt;
Regeln sind keine Naturgesetze; es liegt in ihrer Natur, daß man auch von ihnen abweichen kann.&lt;br /&gt;
Es ist wichtig, den Wert einer Regel zu erkennen und daran die Maßnahmen auszuwählen die sie unterstützen.&lt;br /&gt;
&lt;br /&gt;
Die Abgrenzung von Regeln gegen best practices und auch gegen konkrete Maßnahmen ist nicht immer scharf auszumachen.&lt;br /&gt;
Aber bevor man sich in exegetische Schlachten begibt, sollte man sich immer fragen, worum es eigentlich geht.&lt;br /&gt;
Das Ziel ist klarer, handhabbarer Code, das zu erreichen ist jeder Weg erlaubt.&lt;br /&gt;
Das gilt im Übrigen auch für die Gewichtung von Regeln, Ideologie ist immer der falsche Weg -- egal wohin.&lt;br /&gt;
&lt;br /&gt;
* DRY - [[Don&amp;#039;t repeat yourself]]&lt;br /&gt;
* KISS – Keep it simple stupid [http://www.commitstrip.com/en/2018/10/29/only-the-penitent-coder-will-pass/ commitstrip]&lt;br /&gt;
** Ockhams Razor&lt;br /&gt;
** Law of Parsimony&lt;br /&gt;
** Principle of Least Surprise&lt;br /&gt;
* SoC – Separation of Concerns (im Sinne von Aufgaben-Trennung)&lt;br /&gt;
* YAGNI – You Aren&amp;#039;t Gonna Need It [https://en.wikipedia.org/wiki/You_aren%27t_gonna_need_it Wikipedia]&lt;br /&gt;
* [[Cohesion|high cohesion/loose coupling]]&lt;br /&gt;
* OCP – Open/Closed Principle&lt;br /&gt;
* SRP – Single Responsibility Principle&lt;br /&gt;
* Don’t make me think/write your code for everybody&lt;br /&gt;
* IoC – Inversion of Control / Dependency Inversion&lt;br /&gt;
* Form follows Function – Pragmatismus vor Ästhetik&lt;br /&gt;
* ISP – Interface Segregation Principle&lt;br /&gt;
* Stick to the Paradigm&lt;br /&gt;
* Tell don&amp;#039;t ask ([https://martinfowler.com/bliki/TellDontAsk.html Martin Fowler], [https://pragprog.com/articles/tell-dont-ask Pragmatic Bookshelf])&lt;br /&gt;
&lt;br /&gt;
Was ist mit SOLID?&lt;br /&gt;
&lt;br /&gt;
Robert C. Martin hat fünf Prinzipien (SRP, open/closed, Liskov, ISP, DI) zusammengefaßt und damit ein tolles backronym zu bilden. Ob man dieser Kollektion einen besonderen Wert zuordnen möchte oder nicht sei mal dahingestellt. Das Liskov-Prinzip wurde hier - wegen seiner Konkretheit - unten den best practices eingeordnet. Die Frage wie man IoC und DI beschreibt und gegen einander abgrenzt ist noch zu diskutieren.&lt;br /&gt;
&lt;br /&gt;
= Best Practice =&lt;br /&gt;
Best Practices – auch Heuristiken genannt – sind Techniken oder Vorgehensweisen, die sich in der Praxis in irgendeiner Form&lt;br /&gt;
und iregndeiner Situation bewährt haben. Meist lassen sie Gestaltungsspielraum, wenn es um die konkrete Anwendung geht – die&lt;br /&gt;
Abgrenzung zwischen einer konkreten Regel und einer allgemeinen Heuristik ist fließend. Und man sollte immer bedenken,&lt;br /&gt;
daß best practices in der Regel aus konkreten Situationen heraus entstanden sind und nicht auf jede beliebige Situation übertragbar sind -- dazu giebt es unten ein Antipattern.&lt;br /&gt;
&lt;br /&gt;
* Clean Code (hier nur einige Heuristiken, die sich bei &amp;#039;&amp;#039;meiner&amp;#039;&amp;#039; Arbeit bewährt haben)&lt;br /&gt;
** Jeder Bezeichner soll exakt beschreiben, was das Bezeichnete tut oder enthält&lt;br /&gt;
** Eine Methode soll eine Wert liefern oder etwas tun, aber nicht beides&lt;br /&gt;
** Methoden (auch Konstruktoren) soll nicht mehr als drei Parameter haben&lt;br /&gt;
** Death to Magic numbers&lt;br /&gt;
** saubere Bezeichner sind besser als gute Kommentare sind besser als keine Kommentare sind besser als falsche Kommentare&lt;br /&gt;
** Eine Methode – eine Aufgabe&lt;br /&gt;
** lokale Variablen dort deklarieren, wo sie gebraucht werden&lt;br /&gt;
* Kent Beck&amp;#039;s Design Rules (according to [http://martinfowler.com/bliki/BeckDesignRules.html Martin Fowler])&lt;br /&gt;
** Passes the Tests&lt;br /&gt;
** Reveals intention&lt;br /&gt;
** No Duplication&lt;br /&gt;
** Fewest Elements&lt;br /&gt;
* DI – Dependency Injection (als Implementierung von IoC)&lt;br /&gt;
* LSP - Liskov substitution principle&lt;br /&gt;
* Demeter-Prinzip&lt;br /&gt;
* Trennung von Abstraktions-Ebenen&lt;br /&gt;
* Trennung von Interface und Implementierung siehe dazu auch: Bridge-Pattern&lt;br /&gt;
* Interfaces sollen so schmal wie möglich sein und nur das enthalten was tatsächlich erforderlich ist.&lt;br /&gt;
* verwende Architektur-Pattern&lt;br /&gt;
* verwende das Schichten-Modell&lt;br /&gt;
* [http://clean-code-developer.de/die-grade/roter-grad/#Integration_Operation_Segregation_Principle_IOSP IOSP]– Integration Operation Segregation Principle&lt;br /&gt;
* verwende Design-Pattern (hier einige GoF-Pattern, die ich besonders häufig verwende)&lt;br /&gt;
** Factory Method&lt;br /&gt;
** Adapter&lt;br /&gt;
** (simplified) Builder&lt;br /&gt;
** Singleton&lt;br /&gt;
** Proxy&lt;br /&gt;
** Facade&lt;br /&gt;
** Decorator&lt;br /&gt;
* Delegation statt Vererbung (Delegation wird im GoF-Buch nicht als Pattern sondern als Konzept beschrieben)&lt;br /&gt;
* Ein Konzept – ein Begriff&lt;br /&gt;
::Bsp: die eMail-Adresse sollte im Code nicht durcheinander als &amp;quot;eMail_Adresse&amp;quot;, &amp;quot;mail-Adresse&amp;quot;, &amp;quot;mail&amp;quot;, &amp;quot;eMail&amp;quot; oder sonstwie bezeichnet werden, sondern immer gleich&lt;br /&gt;
* vermeide Antipattern&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Interface_bloat Interface bloat] -- Interfaces verlangen mehr als erforderlich&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Inner-platform_effect Inner-platform effect] – Das System erlaubt soviel Customization, daß eine schlechte Plattform daraus geworden ist.&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Constant_interface Constant Interface] -- Interfaces dienen nur der Definition von Konstanten&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Sequential_coupling Sequential coupling] -– Die Klasse verlangt den Aufruf ihrer Methoden in einer bestimmten Reihenfolge&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Cargo_cult_programming Cargo cult programming] -– Pattern und Methoden verwenden ohne sie zu verstehen&lt;br /&gt;
** [https://en.wikipedia.org/wiki/Golden_hammer Golden hammer] / [https://en.wikipedia.org/wiki/No_Silver_Bullet Silver bullet] -– Alle Probleme mit der gleichen (Lieblings-)Methode lösen&lt;br /&gt;
** Base Bean – Vererbung soll is-a-Beziehungen abbilden, nicht has-a&lt;br /&gt;
** Stellvertreter-Typen – Statt einen Datentyp zu definieren, existierende Klassen (besonders String) mißbrauchen&lt;br /&gt;
** [[Petting Zoo]] - keeping code that is not worth it&lt;br /&gt;
* vermeide Code Smells(see page 18)&lt;br /&gt;
* Refactoring&lt;br /&gt;
* Verwende eine durchgehende Nomenklatur&lt;br /&gt;
* Stick to the Coding Guidelines&lt;br /&gt;
* Das gleiche Problem sollte immer auf gleiche Art und Weise gelöst werden&lt;br /&gt;
* Verwende für Kommentare und Bezeichner nur natürliche Sprachen die Du auch beherrschst&lt;br /&gt;
:actualValue für den aktuellen Wert (richtig ist current)&lt;br /&gt;
* bound als Übersetzung für &amp;quot;verknüpft&amp;quot; (richtig ist linked)&lt;br /&gt;
* Don&amp;#039;t state the obvious:&lt;br /&gt;
: Logger logger = LoggerFactory.obtainLogger();&lt;br /&gt;
: String stringToBeLogged = &amp;quot;log: logging start of action Foo&amp;quot;;&lt;br /&gt;
: logger.log(stringToBeLogged);&lt;br /&gt;
* toString() ist kein Serialisierungs-Tool&lt;br /&gt;
* zu viel von etwas ist selten gut:&lt;br /&gt;
: &amp;lt;q&amp;gt;If you know what you&amp;#039;re doing, three layers is enough; if you don&amp;#039;t, even seventeen levels won&amp;#039;t help.&amp;lt;/q&amp;gt;&lt;br /&gt;
:([https://en.wikipedia.org/wiki/Michael_A._Padlipsky Michael Padlipsky])&lt;br /&gt;
&lt;br /&gt;
= Hilfsmittel =&lt;br /&gt;
Entgegen anderslautender Meinungen erhöht der Einsatz von Tools nicht automatisch die Qualität. Das Berechnen von Werten anhand von Metriken beispielsweise trägt zunächst gar nichts zur Qualität bei, erst die Auswertung und das Durchführen von Maßnahmen zur Änderung der Werte kann als qualitätsstiftende Maßnahme gelten. Nichtsdestotrotz unterstützt die Verwendung von Hilfsmitteln den Entwickler dabei den Weg zum Code hoher Qualität zu beschreiten.&lt;br /&gt;
&lt;br /&gt;
* automatisch durchgeführte Unit-Tests&lt;br /&gt;
:Unit-Tests als &amp;quot;Tool&amp;quot; zu beschreiben mag seltsam klingen. Tatsächlich sind Unit-Tests aber nicht Teil des produktiven Codes und daher kann man mit Fug und Recht von einem Tool sprechen.&lt;br /&gt;
* Metriken&lt;br /&gt;
* Tools zur Code-Analyse (sonar, java-Compiler-Warnings)&lt;br /&gt;
* Tools zur Messung der Test-Abdeckung (EclEmma)&lt;br /&gt;
* Automatische Code-Formatierung (Eclipse Code Formatter)&lt;br /&gt;
* Coding-Guidelines&lt;br /&gt;
* [http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html Sun Code Conventions]&lt;br /&gt;
:Sie werden seit 1999 nicht mehr gepflegt. Einige Regeln sind überholt, andere zweifelhaft (z.B. 6.2: Variablen-Deklarationen nur am Beginn eines Code-Blocks plazieren), Sie bilden aber die Grundlage für das Code-Layout und man sollte sie kennen und berücksichtigen.&amp;lt;br&amp;gt;&lt;br /&gt;
:(Fun fact: Der Autor hat anscheinend von C abgeschrieben – es sind tatsächlich ein paar Fehler im Dokument)&lt;br /&gt;
* Refactoring-Tools (IDEs wie Eclipse bringen eine Menge davon mit&lt;br /&gt;
&lt;br /&gt;
= Arbeitstechniken =&lt;br /&gt;
Die klassische Technik des Entwicklers ist das Zurückziehen hinter die Tastatur. Der Entwickler kriecht erst hervor, wenn das Werk vollendet ist. Das beschreibt einen Teil der Tätigkeit, reicht aber schon seit einem halben Jahrhundert nicht mehr aus. Und auch die Handgriffe, mit denen der Entwickler im stillen Kämmerlein den Wandel von Buchstaben in Code vollzieht wandeln sich im Laufe der Zeit. Man muß nicht jede Technik übernehmen, aber man sollte sich damit befassen und zumindest genau wissen, warum man sie nicht einsetzt.&lt;br /&gt;
&lt;br /&gt;
* [[Boy Scout Principle]]&lt;br /&gt;
* Code – fremden und eigenen – lesen und reflektieren&lt;br /&gt;
* zuhören&lt;br /&gt;
* Diskussion über Code&lt;br /&gt;
* Code-Reviews&lt;br /&gt;
* XP – extreme Programming&lt;br /&gt;
** TDD – Test Driven Development&lt;br /&gt;
** Test First Ansatz&lt;br /&gt;
** Pair Programming&lt;br /&gt;
** Root Cause Analysis&lt;br /&gt;
** Incremental Design&lt;br /&gt;
* Embrace the CATSAN method&lt;br /&gt;
* Programming by Difference (→ Michael Feathers)&lt;br /&gt;
* Rubber Duck Debugging&lt;br /&gt;
* Technologische Schulden minimieren&lt;br /&gt;
&lt;br /&gt;
= Literatur =&lt;br /&gt;
* Edsger Dijkstra [https://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD447.html On the role of scientific thought]&lt;br /&gt;
* Refactoring: Improving the Design of Existing Code (Martin Fowler/Kent Beck)&lt;br /&gt;
* Working Effectively with Legacy Code (Michael C. Feathers)&lt;br /&gt;
* Clean Code (Robert C. Martin)&lt;br /&gt;
* Design Patterns: Elements of Reusable Object-Oriented Software (Gamma/Helm/Vlissides/Johnson)&lt;br /&gt;
* The Mythical Man Month (Fred Brooks)&lt;br /&gt;
* The Systems Bible – 3rd edition of &amp;quot;Systemantics&amp;quot; (John Gall) [https://en.wikipedia.org/wiki/Systemantics Überblick in der Wikipedia]&lt;br /&gt;
* [https://www.google.de/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=2&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwjKitDwvJ3NAhXFKMAKHQ0hBWEQFggpMAE&amp;amp;url=http%3A%2F%2Fworrydream.com%2Frefs%2FBrooks-NoSilverBullet.pdf&amp;amp;usg=AFQjCNGkOYvU4WQgqaHGAqGgicO0XTRcw&amp;amp;bvm=bv.124088155,d.bGg No Silver Bullet] (Fred Brooks)&lt;br /&gt;
* [https://www.google.de/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;cad=rja&amp;amp;uact=8&amp;amp;ved=0ahUKEwiWtayRvZ3NAhUMDMAKHe_JDCYQFggcMAA&amp;amp;url=http%3A%2F%2Fhomepages.cwi.nl%2F~storm%2Fteaching%2Freader%2FDijkstra68.pdf&amp;amp;usg=AFQjCNFIgAgWJ_Aoph79yl9-tFusEGgglQ Goto Considered Harmful] (Edsger Dijkstra)&lt;br /&gt;
* [http://clean-code-developer.de/ clean code developer site]&lt;br /&gt;
* [http://chris.beams.io/posts/git-commit/ Regeln für GIT-commit-Kommentare]&lt;br /&gt;
* [http://www.cs.yale.edu/homes/perlis-alan/quotes.html Epigramme von Alan Perlis]&lt;br /&gt;
* [https://www.heise.de/newsticker/meldung/John-Romero-Von-id-Softwares-Anfaengen-und-World-of-Warcraft-Sucht-3296840.html Programmier-Regeln von John Romero]&lt;br /&gt;
* [https://sourcemaking.com Gute Sammlung von Pattern, Anti-Pattern etc.]&lt;br /&gt;
* [https://xkcd.com/1926 Bad Code in XKCD]&lt;br /&gt;
&lt;br /&gt;
= Zen =&lt;br /&gt;
Keine Richtlinien, keine Anweisungen, einfach Aussagen über die man nachdenken kann. Hier kann man beliebig hitzig diskutieren; wichtig ist nur, daß man darüber – möglichst unvoreingenommen – nachdenkt.&lt;br /&gt;
&lt;br /&gt;
* Wer sich nicht klar ausdrückt, denkt auch nicht klar&lt;br /&gt;
* big bang features lead to big bang&lt;br /&gt;
* Software Engineering ist agnostisch&lt;br /&gt;
* Ein Beispiel beweist nichts, widerlegt aber alles – soviel zu TDD- und Test-Abdeckungs-Fetischismus&lt;br /&gt;
* Ist TDD die zeitgemäße Formulierung für &amp;quot;trial and error&amp;quot;?&lt;br /&gt;
* Wenn Du weißt was Du tust, bist Du gesegnet&lt;br /&gt;
* If it ain&amp;#039;t broken, don&amp;#039;t fix it vs. Refactoring&lt;br /&gt;
* Verwende nur was Du auch verstehst ([https://xkcd.com/1597/ Wie XKCD GIT charakterisiert])&lt;br /&gt;
* Wer etwas ablehnt oder verteidigt sollte genau wissen warum&lt;br /&gt;
* Nichts hält so lange wie ein Provisorium&lt;br /&gt;
* Wer trennt schafft Abhängigkeiten, wer nicht trennt schafft Chaos&lt;br /&gt;
* Nichts ist so einfach, daß man es nicht falsch machen könnte&lt;br /&gt;
* Eine Entscheidung ist richtig, wenn sie rational begründet werden kann&lt;br /&gt;
* Was wert ist daß man es tut, ist wert daß man es richtig tut.&lt;br /&gt;
* Wenn man versucht Probleme auszusitzen, kriechen sie irgendwann hervor und treten einem in den Hintern&lt;/div&gt;</summary>
		<author><name>Ullrich</name></author>
	</entry>
</feed>