<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: PHP bekommt frischen CRAP</title>
	<atom:link href="http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:59:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Von: butzi</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46048</link>
		<dc:creator>butzi</dc:creator>
		<pubDate>Wed, 28 Jul 2010 12:42:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46048</guid>
		<description>Danke für den Artikel, netter Einstieg in die Thematik.

Die Schwell- und Richtwerte muss wohl, wie es immer so ist, jeder für sich selbst finden. Jede Anwendung und jedes Team sieht es ja gern etwas anders.</description>
		<content:encoded><![CDATA[<p>Danke für den Artikel, netter Einstieg in die Thematik.</p>
<p>Die Schwell- und Richtwerte muss wohl, wie es immer so ist, jeder für sich selbst finden. Jede Anwendung und jedes Team sieht es ja gern etwas anders.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Volker Dusch</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46044</link>
		<dc:creator>Volker Dusch</dc:creator>
		<pubDate>Wed, 28 Jul 2010 09:08:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46044</guid>
		<description>@Tom
Ich sehe deinen Punkt fände es aber schade deswegen auf Metriken zu verzichten. Die Zahl sagt erst mal relativ Wertungsfrei aus wie &quot;komplex&quot; eine Funktion ist und nicht wie gut der Code ist. Also nur weil eine Funktion eine höhere Komplexität hat als eine andere ist sie nicht schlechter. Es ist eher ein Schwellenwert (den man im Team selbst festlegen kann :) ) an dem man sich Gedanken über Wartbarkeit machen kann.

Bei der &#039;zyklomatischen Komplexität&#039; könnte man sagen &quot;jede Funktion mit mehr als 10 Verzweigungen steht mal unter dem &#039;Verdacht&#039; schwer wartbar zu sein. Eine Funktion die 10 PHP Funktionen aufruft und deren Rückgabewerte prüft ist sicher schon nicht ganz trivial. Eine Funktion die das 30 mal macht (oder zuerst 10 &#039;preconditions&#039; prüft und dann einen algo ausführt) ist wohl schon ziemlich sicher hart zu lesen.

Hast du nun Tests die Prüfen ob diese Fehlerbehandlungen wirklich nötig sind (d.h. kannst du Code schreiben der dazu führt das sie angesprungen werden) und den andere lesen können wird dadurch die Wartbarkeit verbessert. Mehr würde ich aus dem CRAP-Index nicht ablesen wollen.

Metriken sind erst mal da, was wir da rein interpretieren ist unsere Sache. Ich bin aber entschieden dagegen zu sagen &quot;Meine Implementierung hat eine CCN von 6, deine eine von 9. D.h. meine ist &#039;BESSER&#039;&quot;. Das ist, für mich, weit am Sinn des Werkzeugs vorbei.
(Keine Ahnung ob das deinen Punkt getroffen hat, ich meinte jetzt auch nicht dich persönlich sondern hab die Chance genutzt hier ggf. noch was klarzustellen ;) )


@Timo
Sucht ihr gerade Leute ? :) Klingt nach einer tollen Codebase die ihr euch da erarbeitet habt ! Ich bin ein bischen neidisch.

Was ich sagen will: Die vorgeschlagen Schwellenwerte für jede Metrik sind imho. für jedes Team und für jedes Projekt anzupassen. 
Wenn man ein neues Projekt mit einer langen Laufzeit beginnt das hohe Qualitätsansprüche an sich stellt und die Entwickler diese über den weg dieser Metriken mittragen wollen ist jede &quot;default&quot; Einstellung viel zu hoch.
Beginnt man aber in einem 2,5 Mio Zeilen legacy Projekt langsam solche Werte einzuführen bringt es wenig das die Tools über 60.000 Violations mukieren, hier will man erst einmal die &quot;schlimmsten&quot; Probleme lösen und über die Zeit die Werte senken.

Es ist gerade bei riesigen Codebasen nicht immer möglich alles zu refactoren (vor allem wenn man keine Tests hat) und deswegen kann &#039;erst Tests schreiben und wenns immer noch schrecklich aussieht den Code umbauen, sonst erst mal sehen wo noch Baustellen sind&#039; auch ein Arbeitsablauf sein. Denke ich ?

Für Projekte in denen &quot;100% Code Coverage&quot; gelebt wird ist der CRAP-Index natürlich ziemlich egal da er nur die CCN wiederspiegelt.</description>
		<content:encoded><![CDATA[<p>@Tom<br />
Ich sehe deinen Punkt fände es aber schade deswegen auf Metriken zu verzichten. Die Zahl sagt erst mal relativ Wertungsfrei aus wie &#8220;komplex&#8221; eine Funktion ist und nicht wie gut der Code ist. Also nur weil eine Funktion eine höhere Komplexität hat als eine andere ist sie nicht schlechter. Es ist eher ein Schwellenwert (den man im Team selbst festlegen kann <img src='http://www.phphatesme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) an dem man sich Gedanken über Wartbarkeit machen kann.</p>
<p>Bei der &#8216;zyklomatischen Komplexität&#8217; könnte man sagen &#8220;jede Funktion mit mehr als 10 Verzweigungen steht mal unter dem &#8216;Verdacht&#8217; schwer wartbar zu sein. Eine Funktion die 10 PHP Funktionen aufruft und deren Rückgabewerte prüft ist sicher schon nicht ganz trivial. Eine Funktion die das 30 mal macht (oder zuerst 10 &#8216;preconditions&#8217; prüft und dann einen algo ausführt) ist wohl schon ziemlich sicher hart zu lesen.</p>
<p>Hast du nun Tests die Prüfen ob diese Fehlerbehandlungen wirklich nötig sind (d.h. kannst du Code schreiben der dazu führt das sie angesprungen werden) und den andere lesen können wird dadurch die Wartbarkeit verbessert. Mehr würde ich aus dem CRAP-Index nicht ablesen wollen.</p>
<p>Metriken sind erst mal da, was wir da rein interpretieren ist unsere Sache. Ich bin aber entschieden dagegen zu sagen &#8220;Meine Implementierung hat eine CCN von 6, deine eine von 9. D.h. meine ist &#8216;BESSER&#8217;&#8221;. Das ist, für mich, weit am Sinn des Werkzeugs vorbei.<br />
(Keine Ahnung ob das deinen Punkt getroffen hat, ich meinte jetzt auch nicht dich persönlich sondern hab die Chance genutzt hier ggf. noch was klarzustellen <img src='http://www.phphatesme.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  )</p>
<p>@Timo<br />
Sucht ihr gerade Leute ? <img src='http://www.phphatesme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Klingt nach einer tollen Codebase die ihr euch da erarbeitet habt ! Ich bin ein bischen neidisch.</p>
<p>Was ich sagen will: Die vorgeschlagen Schwellenwerte für jede Metrik sind imho. für jedes Team und für jedes Projekt anzupassen.<br />
Wenn man ein neues Projekt mit einer langen Laufzeit beginnt das hohe Qualitätsansprüche an sich stellt und die Entwickler diese über den weg dieser Metriken mittragen wollen ist jede &#8220;default&#8221; Einstellung viel zu hoch.<br />
Beginnt man aber in einem 2,5 Mio Zeilen legacy Projekt langsam solche Werte einzuführen bringt es wenig das die Tools über 60.000 Violations mukieren, hier will man erst einmal die &#8220;schlimmsten&#8221; Probleme lösen und über die Zeit die Werte senken.</p>
<p>Es ist gerade bei riesigen Codebasen nicht immer möglich alles zu refactoren (vor allem wenn man keine Tests hat) und deswegen kann &#8216;erst Tests schreiben und wenns immer noch schrecklich aussieht den Code umbauen, sonst erst mal sehen wo noch Baustellen sind&#8217; auch ein Arbeitsablauf sein. Denke ich ?</p>
<p>Für Projekte in denen &#8220;100% Code Coverage&#8221; gelebt wird ist der CRAP-Index natürlich ziemlich egal da er nur die CCN wiederspiegelt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Timo Reitz</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46042</link>
		<dc:creator>Timo Reitz</dc:creator>
		<pubDate>Wed, 28 Jul 2010 07:37:55 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46042</guid>
		<description>Interessant: In dem von Nils Langner geschriebenen Artikel zur zyklomatischen Komplexität, der in diesem Artikel verlinkt wurde, steht „Einen Wert, den man immer wieder hört, den die Komplexität nicht überschreiten soll ist 10. Meiner Meinung ist der Wert schon viel zu hoch, aber die Allgemeinheit scheint da anders zu denken.“

In dem hier vorliegenden Grafik-Beispiel ist der doppelte Wert mit „popeligen“ 75% Code-Coverage auch noch in Ordnung, und noch höhere Komplexität soll auch noch akzeptiert werden. Ungeheuerlich!

Um ehrlich zu sein, habe ich in meinem Code Schwierigkeiten, Methoden oder Funktionen zu finden, die überhaupt 20 Zeilen lang sind, geschweige denn eine zyklomatische Komplexität von 20 haben!

Und ich akzeptiere nur Code Coverage von 100%. Wenn meine Unit-Tests richtig arbeiten, decken sie alle denkbaren Fälle ab, wenn aber bei allen denkbaren Fällen trotzdem nicht der ganze Code durchlaufen wird, kann er nur überflüssig sein.</description>
		<content:encoded><![CDATA[<p>Interessant: In dem von Nils Langner geschriebenen Artikel zur zyklomatischen Komplexität, der in diesem Artikel verlinkt wurde, steht „Einen Wert, den man immer wieder hört, den die Komplexität nicht überschreiten soll ist 10. Meiner Meinung ist der Wert schon viel zu hoch, aber die Allgemeinheit scheint da anders zu denken.“</p>
<p>In dem hier vorliegenden Grafik-Beispiel ist der doppelte Wert mit „popeligen“ 75% Code-Coverage auch noch in Ordnung, und noch höhere Komplexität soll auch noch akzeptiert werden. Ungeheuerlich!</p>
<p>Um ehrlich zu sein, habe ich in meinem Code Schwierigkeiten, Methoden oder Funktionen zu finden, die überhaupt 20 Zeilen lang sind, geschweige denn eine zyklomatische Komplexität von 20 haben!</p>
<p>Und ich akzeptiere nur Code Coverage von 100%. Wenn meine Unit-Tests richtig arbeiten, decken sie alle denkbaren Fälle ab, wenn aber bei allen denkbaren Fällen trotzdem nicht der ganze Code durchlaufen wird, kann er nur überflüssig sein.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Lars Ebert</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46041</link>
		<dc:creator>Lars Ebert</dc:creator>
		<pubDate>Wed, 28 Jul 2010 07:20:16 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46041</guid>
		<description>Ich habe mich mit dem Thema auch noch nicht wirklich beschäftigt, ber dieser Artikel bietet einen wirklich interessanten Einblick.
Vielen Dank</description>
		<content:encoded><![CDATA[<p>Ich habe mich mit dem Thema auch noch nicht wirklich beschäftigt, ber dieser Artikel bietet einen wirklich interessanten Einblick.<br />
Vielen Dank</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Tom</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46040</link>
		<dc:creator>Tom</dc:creator>
		<pubDate>Wed, 28 Jul 2010 06:10:24 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46040</guid>
		<description>Danke für den Artikel und die Erläuterungen.

Ich habe allerdings so meine Probleme mit der zyklomatischen und der N-Path Komplexität. Meiner Ansicht nach ist da ein Denkfehler drin. Wenn jemand in PHP (das häufig statt Fehlermeldungen zu liefern einfach FALSE als Rückgabewert gibt) ordentlich arbeitet, muss er viele Rückgabewerte auf potentielle Fehler prüfen. Dazu benötigt er jedes Mal eine Verzweigung.

Sauberer, gut geprüfter Code hat somit automatisch mehr Verzweigungen als schlechter Code, der im Fehlerfall den Leuten um die Ohren fliegt. Damit hat sauberer Code aber automatisch eine höhere &quot;N-Path Komplexität&quot;. Die echte &quot;Komplexität&quot; der Funktion ist trotz größerer Anzahl Verzweigungen aber geringer, weil sie ja robuster ist als ohne.

Als Folge davon ist der CRAP-Faktor für PHP in der Regel nicht aussagekräftig. Er müsste auch berücksichtigen, wie viel Code eine Verzweigung hat. Damit nicht automatisch jeder Error-Stub, der nur eine Exception wirft, genauso hoch gewichtet wird, wie eine Verzweigung welche eine ganze Funktion in 2 Hälften spaltet.</description>
		<content:encoded><![CDATA[<p>Danke für den Artikel und die Erläuterungen.</p>
<p>Ich habe allerdings so meine Probleme mit der zyklomatischen und der N-Path Komplexität. Meiner Ansicht nach ist da ein Denkfehler drin. Wenn jemand in PHP (das häufig statt Fehlermeldungen zu liefern einfach FALSE als Rückgabewert gibt) ordentlich arbeitet, muss er viele Rückgabewerte auf potentielle Fehler prüfen. Dazu benötigt er jedes Mal eine Verzweigung.</p>
<p>Sauberer, gut geprüfter Code hat somit automatisch mehr Verzweigungen als schlechter Code, der im Fehlerfall den Leuten um die Ohren fliegt. Damit hat sauberer Code aber automatisch eine höhere &#8220;N-Path Komplexität&#8221;. Die echte &#8220;Komplexität&#8221; der Funktion ist trotz größerer Anzahl Verzweigungen aber geringer, weil sie ja robuster ist als ohne.</p>
<p>Als Folge davon ist der CRAP-Faktor für PHP in der Regel nicht aussagekräftig. Er müsste auch berücksichtigen, wie viel Code eine Verzweigung hat. Damit nicht automatisch jeder Error-Stub, der nur eine Exception wirft, genauso hoch gewichtet wird, wie eine Verzweigung welche eine ganze Funktion in 2 Hälften spaltet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Ralph Meier</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/php-bekommt-frischen-crap/comment-page-1/#comment-46039</link>
		<dc:creator>Ralph Meier</dc:creator>
		<pubDate>Wed, 28 Jul 2010 05:35:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=6432#comment-46039</guid>
		<description>Danke für den Post. Sehr schöne und auch einfache Erklärung.

Ich schiebe das Thema Code Metriken schon lange vor mir her und lese auch immer wieder Artikel darüber. Bis jetzt habe ich die Zeit aber noch nicht gefunden, mich mit dem Thema intensiver auseinanderzusetzen.</description>
		<content:encoded><![CDATA[<p>Danke für den Post. Sehr schöne und auch einfache Erklärung.</p>
<p>Ich schiebe das Thema Code Metriken schon lange vor mir her und lese auch immer wieder Artikel darüber. Bis jetzt habe ich die Zeit aber noch nicht gefunden, mich mit dem Thema intensiver auseinanderzusetzen.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

