<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Codequalit%C3%A4t</id>
	<title>Codequalität - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Codequalit%C3%A4t"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Codequalit%C3%A4t&amp;action=history"/>
	<updated>2026-05-27T03:09:53Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Codequalit%C3%A4t&amp;diff=2852983&amp;oldid=prev</id>
		<title>imported&gt;Hutch: Abschnittlink korrigiert</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Codequalit%C3%A4t&amp;diff=2852983&amp;oldid=prev"/>
		<updated>2022-07-26T07:26:19Z</updated>

		<summary type="html">&lt;p&gt;Abschnittlink korrigiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Mit &amp;#039;&amp;#039;&amp;#039;Codequalität&amp;#039;&amp;#039;&amp;#039; wird in der [[Programmierung]] das Maß bezeichnet, mit dem der [[Quelltext|Quellcode]] eines [[Computerprogramm|Programms]] bestehende, die formale Gestaltung betreffende Anforderungen erfüllt.&amp;lt;!--nach wie vor nicht belegt. Zweifelhaft, dass hier &amp;#039;Qualität&amp;#039; (von Code) nur für Teile der Anforderungen gelten sollte--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Codequalität ist ein Teilaspekt von [[Softwarequalität]], mit dem insbesondere nicht-funktionale Anforderungen wie &amp;#039;&amp;#039;Konformität, Verständlichkeit, Analysierbarkeit, Modifizierbarkeit, Anpassbarkeit, Prüfbarkeit&amp;#039;&amp;#039; (so z.&amp;amp;nbsp;B. benannt und definiert nach [[ISO/IEC 9126]]) erfüllt bzw. unterstützt werden sollen.&lt;br /&gt;
&lt;br /&gt;
Im Sprachgebrauch werden für denselben Sachverhalt auch die Ausdrücke [[Programmierstil]] oder Codierstil benutzt, weitere Synonyme sind z.&amp;amp;nbsp;B. Codestruktur, Codeformat(ierung) etc.&lt;br /&gt;
&lt;br /&gt;
== Allgemein ==&lt;br /&gt;
Als Teil des gesamten Qualitätsbegriffs für [[Software]], der „die Gesamtheit der Merkmale und Merkmalswerte eines Softwareprodukts [umfasst], die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu erfüllen“,&amp;lt;ref name=&amp;quot;Balzert&amp;quot;&amp;gt;Helmut Balzert: &amp;#039;&amp;#039;Lehrbuch der Softwaretechnik.&amp;#039;&amp;#039; Teil 2: &amp;#039;&amp;#039;Softwaremanagement, Software-Qualitätssicherung, Unternehmensmodellierung.&amp;#039;&amp;#039; 1998, ISBN 3-8274-0065-1, S. 257.&amp;lt;/ref&amp;gt; bezieht sich „Codequalität“ auf die nicht-funktionalen und eher formalen Anforderungen, die durch die Gestaltung des Quelltextes zu erfüllen sind.&amp;lt;!-- bisherige schwammige Aussagen ersetzt; nach wie vor unbelegt.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine hohe Codequalität fördert die Verständlichkeit und Wartbarkeit des Quelltextes. Alleine der Einsatz von [[Komplexität (Informatik)#Softwarekomplexität|Komplexitätsmetriken]] und die Verbesserung der damit aufgezeigten Codeteile führen zu ca. 20 % höherer Produktivität in der Softwarewartung.&amp;lt;ref&amp;gt;{{Literatur |Autor=Capers Jones |Titel=Software Assessments, Benchmarks, and Best Practices |Verlag=Addison-Wesley |Datum=2000 |ISBN=978-0-201-48542-4 |Sprache=en}}&amp;lt;/ref&amp;gt; Generell wird die verbesserte Verständlichkeit und Wartbarkeit durch formale Sauberkeit und eine verständliche Struktur erreicht.&amp;lt;ref&amp;gt;Donis Marschall, John Bruno: &amp;#039;&amp;#039;Solid Code.&amp;#039;&amp;#039; 2009, ISBN 978-3-86645-664-8.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da es sich bei der [[Software-Entwicklung]] um einen kreativen Prozess handelt,&amp;lt;ref name=&amp;quot;Martin&amp;quot;&amp;gt;Robert C. Martin: &amp;#039;&amp;#039;Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code.&amp;#039;&amp;#039; 2009, ISBN 978-3-8266-5548-7, S. 43–44.&amp;lt;/ref&amp;gt; ist eine explizite Unterteilung in „guten“ oder „schlechten“ Code nicht einfach möglich. Zwar existieren quasi-standardisierte Methodenkonzepte, nach denen Software entwickelt wird; für das Erstellen von Code jedoch lassen sich häufig nur sogenannte [[Best practice|Best practices]], [[Entwurfsmuster]] (inkl. identifizierter [[Antimuster]]) oder auf den Quellcode bezogene [[Styleguide|Style-Guides]]&amp;lt;!-- nicht zu verwechseln mit Styleguides, die das Aussehen einer GUI festlegen!--&amp;gt; mit fakultativem Charakter finden. Dennoch lässt sich Codequalität beschreiben, unter anderem mit geeigneten [[Softwaremetrik]]en wie beispielsweise [[Komplexität (Informatik)#Softwarekomplexität|Komplexitätsmetriken]].&lt;br /&gt;
&lt;br /&gt;
Mit Werkzeugen zur [[Quelltextformatierung]] kann Programmcode automatisch an bestimmte Formatvorgaben angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== Kriterien ==&lt;br /&gt;
„Guter Code“ zeichnet sich in erster Linie durch ein klar definiertes und von außen sichtbares Erscheinungsbild aus. Mit undurchdachtem oder unter Zeitdruck niedergeschriebenem Quelltext wird oft versucht, mehrere Aufgaben auf einmal zu erfüllen, der Code verliert somit die Fähigkeit, den Auftragsinhalt klar zu kommunizieren und zeichnet sich infolgedessen häufig durch sogenannte [[Code-Smell]]s aus. Auf diese Weise wird die Ausdruckskraft, Kontrolle und Erweiterbarkeit vermindert beziehungsweise erschwert.&amp;lt;ref name=&amp;quot;Martin&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf Basis dieser Feststellung lassen sich verschiedene Unterscheidungskriterien formulieren, die auch für die [[Testgetriebene Entwicklung]] von Interesse sind:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Lesbarkeit&amp;#039;&amp;#039; – Wie gut lässt sich der Code von anderen Entwicklern nachvollziehen?&lt;br /&gt;
* &amp;#039;&amp;#039;Testbarkeit&amp;#039;&amp;#039; – Inwiefern ist der Code für automatisiertes Testen geeignet und vorbereitet?&lt;br /&gt;
* &amp;#039;&amp;#039;Änderbarkeit&amp;#039;&amp;#039; – Wie leicht macht der Code es anderen Programmierern ihn zu erweitern?&lt;br /&gt;
&lt;br /&gt;
Hierbei handelt es sich nicht um objektiv messbare Kriterien. Dennoch lassen sich Quelltexte mit Hilfe dieser drei Qualitätsmerkmale unterscheidend bewerten.&amp;lt;ref&amp;gt;Jan Brennenstuhl: &amp;#039;&amp;#039;Saubere Software durch TDD? – Wie testgetriebenes Entwickeln zu besserer Codequalität führt.&amp;#039;&amp;#039; 2012.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter gewissen Voraussetzungen kann auch die &amp;#039;&amp;#039;[[Plattformunabhängigkeit|Portierbarkeit]]&amp;#039;&amp;#039; von Code ein Kriterium für dessen Qualität sein. Dies betrifft allerdings nur solchen Code, dessen Interpretation und Ausführung von der CPU-Familie bzw. vom Prozessortyp des Rechners, auf welchem der Code zum Laufen gebracht werden soll, abhängt. Man spricht auch von „maschinenabhängigem Code“, der für die Portierbarkeit eine Bedeutung besitzt. In plattformübergreifenden Software-Projekten, in welchen mit niederen Programmiersprachen gearbeitet wird, spielt Portierbarkeit in vielen Fällen eine Rolle.&amp;lt;ref&amp;gt;Brian Hook: &amp;#039;&amp;#039;Portabler Code: Einführung in die plattformunabhängige Softwareentwicklung.&amp;#039;&amp;#039; Open Source Press, München 2006, ISBN 3-937514-19-8.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso ist die anzustrebende Codequalität davon abhängig, inwieweit die Qualitätskriterien situationsbedingt von Bedeutung sind. Geringere Bedeutung kommt den Kriterien z.&amp;amp;nbsp;B. zu, wenn die Software nur einmalig (im Gegensatz zu dauerhaft) benutzt werden soll; oder im privaten Bereich (im Ggs. zu einem unternehmerischen Umfeld mit ggf. vielen [[Softwareentwickler]]n). Die in solchen Fällen geringeren Anforderungen können sich dementsprechend auch im Programmcode widerspiegeln.&lt;br /&gt;
&lt;br /&gt;
== Qualitätssichernde Maßnahmen ==&lt;br /&gt;
Beispiele für Maßnahmen zur Herstellung „guten Programmcodes“ können u.&amp;amp;nbsp;a. sein:&lt;br /&gt;
* Erstellung und Verabschiedung von [[Programmierrichtlinie]]n&lt;br /&gt;
* Schulungsmaßnahmen zur Vermittlung der darin enthaltenen Festlegungen&lt;br /&gt;
* [[Coaching]] / Unterstützung noch unerfahrener Programmierer beim Programmieren (Codieren)&lt;br /&gt;
* Verwendung von [[Codegenerator]]en (die zum Teil eine grafische Ablaufdarstellung bieten) und/oder anderer [[Programmierstandard]]s&lt;br /&gt;
* Einsatz von Verfahren zur Strukturverbesserung von Quellcode, z.&amp;amp;nbsp;B. [[Refactoring]]&lt;br /&gt;
* [[Code-Review]]s zur regelmäßigen Prüfung der Codequalität&lt;br /&gt;
* Führen von [[Softwaremetrik]]en als Teilmaßnahme der [[Qualitätssicherung]]&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Sebastian Kübeck&lt;br /&gt;
   |Titel=Software-Sanierung - Weiterentwicklung, Testen und Refactoring bestehender Software&lt;br /&gt;
   |Verlag=mitp-Verlag&lt;br /&gt;
   |Ort=Heidelberg&lt;br /&gt;
   |Datum=2009&lt;br /&gt;
   |ISBN=978-3-8266-5072-7}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Robert C. Martin&lt;br /&gt;
   |Titel=Clean Code - Refactoring, Patterns, Testen und Techniken für sauberen Code&lt;br /&gt;
   |Verlag=mitp-Verlag&lt;br /&gt;
   |Ort=Heidelberg&lt;br /&gt;
   |Datum=2009&lt;br /&gt;
   |ISBN=978-3-8266-5548-7}}&lt;br /&gt;
* {{Literatur&lt;br /&gt;
   |Autor=Frank Westphal&lt;br /&gt;
   |Titel=Testgetriebene Entwicklung mit JUnit und FIT&lt;br /&gt;
   |Verlag=dpunkt.verlag&lt;br /&gt;
   |Ort=Heidelberg&lt;br /&gt;
   |Datum=2005&lt;br /&gt;
   |ISBN=3-89864-220-8}}&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Softwarequalitat}}&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:Qualitätsmanagement (Softwaretechnik)]]&lt;br /&gt;
[[en:Code quality]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Hutch</name></author>
	</entry>
</feed>