<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Holger Rüprich</title>
	<atom:link href="http://rueprich.de/feed" rel="self" type="application/rss+xml" />
	<link>http://rueprich.de</link>
	<description>Web-Entwickler aus Leidenschaft</description>
	<lastBuildDate>Wed, 29 Apr 2015 22:09:59 +0000</lastBuildDate>
	<language>de-DE</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.12</generator>
	<item>
		<title>Wollt ihr mit euren Kids etwas unternehmen?</title>
		<link>http://rueprich.de/bloggt/2015/04/wollt-ihr-mit-euren-kids-etwas-unternehmen</link>
		<comments>http://rueprich.de/bloggt/2015/04/wollt-ihr-mit-euren-kids-etwas-unternehmen#comments</comments>
		<pubDate>Wed, 29 Apr 2015 22:09:59 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=712</guid>
		<description><![CDATA[<p>Dann kommt mein neues Hobby-Projekt mitkids.in genau richtig :)  Auf mitkids.in findet ihr Tipps zu Ausflügen mit Kindern in eurer Nähe. Aktuell ist die Seite noch auf die Region um Karlsruhe beschränkt. Wenn alles gut läuft, wird sich das in den nächsten Wochen ändern. Nach dem wir in den letzten Jahren immer wieder vor der [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2015/04/wollt-ihr-mit-euren-kids-etwas-unternehmen">Wollt ihr mit euren Kids etwas unternehmen?</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Dann kommt mein neues Hobby-Projekt <a title="Ausflugsziele für Familien mit Kindern" href="http://mitkids.in">mitkids.in</a> genau richtig :)  Auf <a title="Freizeitaktivitäten mit Kids" href="http://mitkids.in">mitkids.in</a> findet ihr Tipps zu Ausflügen mit Kindern in eurer Nähe. Aktuell ist die Seite noch auf die Region um <a title="Ausflugsziele mit Kindern in Karlsruhe" href="http://mitkids.in/karlsruhe">Karlsruhe</a> beschränkt. Wenn alles gut läuft, wird sich das in den nächsten Wochen ändern.<br />
<span id="more-712"></span><br />
Nach dem wir in den letzten Jahren immer wieder vor der Frage standen, was wir mit unseren beiden Kleinen unternehmen könnten und am Ende nur selten neue oder gute Tipps finden konnten, kam die Idee zur eigenen Seite. Unser Ziel ist es eine Sammlung von persönlichen Empfehlungen von Eltern für Eltern zusammen zu stellen. Die Seite soll kein reines Online Adressverzeichnis werden. Tipps zu Ausflugszielen oder Freizeitaktivitäten mit Kindern können direkt auf der Seite <a title="Ausflugsziel für Familien mit Kindern vorschlagen" href="http://mitkids.in/vorschlag">vorgeschlagen</a> werden. Jeder Tipp wird zunächst geprüft und wird anschließend für alle Besucher freigeschaltet.</p>
<p>Glücklicherweise unterstützt mich meine Frau Helena bei dem Vorhaben im Bezug auf die Inhalte auf der Seite und den dazugehörigen Social Media Seiten.</p>
<p>Neben dem Nutzen der Seite zur Freizeitgestaltung mit unseren Kids, ist die Seite für mich vor allem spannend,</p>
<ul>
<li>um zu sehen wie viele Leute sich für solch eine Seite über welche Wege motivieren lassen.</li>
<li>wie viele Personen die Seite aktiv durch Feedback und eigene Vorschläge mit entwickeln.</li>
<li>wie die Seite für Suchmaschinen optimiert werden kann.</li>
<li>wie viel Traffic über Soziale Netzwerke auf welche Art auf die Seite gelenkt werden kann.</li>
<li>und natürlich ob bzw. wie heute so eine Nischen-Online-Community überhaupt aufgebaut werden kann.</li>
</ul>
<p>Ich bin wirklich sehr gespannt, was aus der Seite wird. Über eure Unterstützung würde ich mich daher natürlich sehr freuen.</p>
<p>&nbsp;</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2015/04/wollt-ihr-mit-euren-kids-etwas-unternehmen">Wollt ihr mit euren Kids etwas unternehmen?</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2015/04/wollt-ihr-mit-euren-kids-etwas-unternehmen/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Targeting &#8211; Die Personalisierung des Web</title>
		<link>http://rueprich.de/bloggt/2012/08/targeting-die-personalisierung-des-web</link>
		<comments>http://rueprich.de/bloggt/2012/08/targeting-die-personalisierung-des-web#comments</comments>
		<pubDate>Mon, 06 Aug 2012 21:51:03 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Web-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=613</guid>
		<description><![CDATA[<p>Das Web verändert sich rasant. Die statischen Inhalte der Anfangszeit wurden schnell durch Systeme wie Blogs, Online Shops oder Content Management Systeme ersetzt. Seit dem Hype um das Web 2.0 und dem Entstehen von Plattformen wie Facebook, Twitter und YouTube ist user-generated content nicht mehr weg zu denken. Im Online Marketing wird seit einigen Jahren eine [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2012/08/targeting-die-personalisierung-des-web">Targeting &#8211; Die Personalisierung des Web</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Das Web verändert sich rasant. Die statischen Inhalte der Anfangszeit wurden schnell durch Systeme wie Blogs, Online Shops oder Content Management Systeme ersetzt. Seit dem Hype um das Web 2.0 und dem Entstehen von Plattformen wie <a title="Zur Website von Facebook" href="https://www.facebook.com/">Facebook</a>, <a title="Zur Website von Twitter" href="http://twitter.com/">Twitter</a> und <a title="Zur Website von YouTube" href="http://www.youtube.com/">YouTube</a> ist <a title="user-generated content bei Wikipedia" href="http://de.wikipedia.org/wiki/User-generated_content">user-generated content</a> nicht mehr weg zu denken.</p>
<p>Im Online Marketing wird <a title="Die Geschichte des Predictive Targeting" href="http://www.predictive-behavioral-targeting.de/2010/02/die-geschichte-des-predictive-targeting/">seit einigen Jahren</a> eine Technologie genutzt, die einen weiteren Schritt in dieser Entwicklung darstellt: Targeting.<br />
<span id="more-613"></span><br />
Auf Wikipedia wird zwischen den folgenden <a title="Online Targeting bei Wikipedia" href="http://de.wikipedia.org/wiki/Online-Targeting">Formen des Targetings</a> unterschieden:</p>
<ul>
<li>Content-Targeting</li>
<li>Semantisches Targeting</li>
<li>Behavioral-Targeting</li>
<li>Predictive-Behavioral-Targeting</li>
<li>Retargeting</li>
<li>Social-Media-Targeting</li>
</ul>
<p>Zusammenfassend geht es darum, aus vorhandenen Informationen möglichst genaue Nutzerprofile zu erstellen und Inhalte nach Relevanz für diese Profile auszusteuern.</p>
<p>Die Website von <a title="Zur Website von Amazon" href="http://www.amazon.de/">Amazon</a> ist hierfür ein beispielhaftes Vorbild. Kaum eine andere Firma versteht es so gut wie Amazon, Besuchern genau die Inhalte zu präsentieren, nach denen diese auf der Suche sind. Doch auch die Online Werbung von <a title="Zur Website von Zalando" href="http://www.zalando.de/">Zalando</a> zeigt was möglich ist. Wurde der Online Shop einmal besucht, wird man beim Surfen regelrecht von Zalandos Retargeting-Maßnahmen mit den zuletzt angesehen Schuhen verfolgt.</p>
<p>Zur Erkennung einzelner Benutzer wird in der Regel auf Cookies gesetzt. Anbieter wie <a title="Die Website von nugg.ad" href="http://www.nugg.ad/de/">nugg.ad</a>, <a title="Zur Website von Persuasion Engines" href="http://www.persuasionengines.com">Persuasion Engines</a>, oder <a title="Zur Website von United Internet Media" href="http://www.united-internet-media.de/tgp.html">United Internet Media</a> bieten bereits fertige Targeting Lösungen. Damit einher gehen allerdings teilweise sehr hohe Kosten sowie der Umstand, dass etliche Daten an externe Firmen übertragen werden. Eine In-House-Lösung bietet dagegen die Möglichkeit gesammelte Informationen weiter anzureichern und mit Offline-Kanälen wie Mailings oder Telefonaten zu verbinden.</p>
<p>Ob die personalisierte Ansprache von allen Nutzern positiv oder eher als unheimlich empfunden wird, ist eine ganz andere Frage.</p>
<p>Eine Sache steht allerdings fest &#8211; mit steigender Anzahl an Inhalten im Web, wird es immer schwieriger den Überblick zu behalten und relevante Inhalte aufzufinden. Nicht ohne Grund versucht selbst Google bereits seit einiger Zeit <a title="Google sucht dich bei Spiegel Online" href="http://www.spiegel.de/netzwelt/web/neuer-algorithmus-google-sucht-dich-a-808170.html">Suchmaschinen-Ergebnisse zu personalisieren</a>.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2012/08/targeting-die-personalisierung-des-web">Targeting &#8211; Die Personalisierung des Web</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2012/08/targeting-die-personalisierung-des-web/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eine riesen Sauerei &#8211; Quiek.de</title>
		<link>http://rueprich.de/bloggt/2011/11/eine-riesen-sauerei-quiek-de</link>
		<comments>http://rueprich.de/bloggt/2011/11/eine-riesen-sauerei-quiek-de#comments</comments>
		<pubDate>Sun, 20 Nov 2011 00:28:24 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Mobile Web Apps]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=579</guid>
		<description><![CDATA[<p>Kann man zu viele Domains haben? Eigentlich nicht. Denn wer weiß schon, ob eine Domain nach einiger Zeit nicht mal Unsummen an Geld einbringt! Über die letzten Jahre hinweg habe ich so immer wieder einzelne Domains registriert. Quasi ein Highlight nach dem Anderen. Bevorzugt Domains mit kurzen aussprechbaren Namen, da diese nur selten zu haben [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/11/eine-riesen-sauerei-quiek-de">Eine riesen Sauerei &#8211; Quiek.de</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Kann man zu viele Domains haben? Eigentlich nicht. Denn wer weiß schon, ob eine Domain nach einiger Zeit nicht mal Unsummen an Geld einbringt! Über die letzten Jahre hinweg habe ich so immer wieder einzelne Domains registriert. Quasi ein Highlight nach dem Anderen. Bevorzugt Domains mit kurzen aussprechbaren Namen, da diese nur selten zu haben sind. Bringt mir eine dieser Domains heute Unsummen an Geld ein? Eher nicht&#8230;</p>
<p><span id="more-579"></span></p>
<p>Alle paar Monate stehe ich daher vor der Frage, was aus diesen Domains werden soll. Vergangenen Dienstag war es wieder soweit. Voller Eifer und Tatendrang, fest entschlossen einige alte Domains zu kündigen, machte ich mich ans Werk. Die erste Domain auf meiner Liste war <a title="Quiek.de - Was ne Sauerei!" href="http://quiek.de">quiek.de</a>. Die Domain ist ja schon sehr kurz und prägnant &#8211; eigentlich viel zu schade zum Kündigen. Aber sollte die Domain deswegen weitere vier bis fünf Jahre Staub ansetzten? Nein. Somit blieben zwei Optionen: Kündigen oder mit Leben füllen.</p>
<p>Wenige Augenblicke später stand glücklicherweise die rettende Idee: <a title="Quiek.de - So ne Sauerei" href="http://quiek.de">quiek.de</a> wird die neue Plattform für <em>Sauerei</em> im deutschsprachigen Netz.</p>
<p>Seid ihr von etwas genervt? Oder wollt ihr einfach mal Dampf ablassen? Quiek.de machts möglich (<a title="Zur Twitter Website" href="http://twitter.com/">Twitter Account</a> vorausgesetzt). Twittert dazu einfach über eine Sauerei eurer Wahl. <a title="Sauerei bei quiek.de" href="http://quiek.de">Quiek.de</a> findet alle Tweets die &#8222;Sauerei&#8220; enthalten und gibt diesen eine Plattform.</p>
<p>Wenn das mal keine Anwendung ist, auf die die Welt gewartet hat?!</p>
<h3>Zur Technik</h3>
<p>Im ersten Schritt habe ich versucht eine rein Client-seitige JavaScript Anwendung zu schreiben. Die einzelnen Tweets werden per AJAX und JSONP über die <a title="Dokumentation der Twitter Search API" href="https://dev.twitter.com/docs/api#search">Twitter Search API</a> geladen. Grafiken habe ich keine eingesetzt, sondern greife auf CSS Features wie text-shadow, box-shadow und RGBA zu.</p>
<p>Durch die folgenden zwei META-Elemente kann die Website gleichzeitig als Mobile Web App verwendet werden:</p>
<pre class="brush:html">&lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /&gt;
&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</pre>
<p>Ergänzend wird mit Hilfe von <a title="Dokumentation der CSS3 Media Queries" href="http://www.w3.org/TR/css3-mediaqueries/">CSS Media Queries</a> die Schriftgröße und der Seitenrand für die Darstellung auf kleinen Bildschirmen optimiert.</p>
<p>Damit die Seite einen kleinen Mehrwert zur Sauerei auf Twitter hat, können Nutzer einzelne Sauereien &#8222;liken&#8220; und so die <a title="Top Ten der quiek.de Sauereien" href="http://quiek.de/top.html">Top Ten der quiek.de Sauereien</a> bestimmen. Die Top Ten sollten allerdings für alle Nutzer gelten, daher musste ich mein Plan, eine rein Client-seitige JavaScript Anwendung zu schreiben, verwerfen und überlasse die Verwaltung der &#8222;gelikten&#8220; Tweets einem kleinen PHP Script.</p>
<p>Mal sehen, wie es mit der Seite und meiner Domain weitergeht. Fürs Erste ist die Domain gerettet und mein Gewissen besänftigt :)</p>
<p>&nbsp;</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/11/eine-riesen-sauerei-quiek-de">Eine riesen Sauerei &#8211; Quiek.de</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2011/11/eine-riesen-sauerei-quiek-de/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mobile Web Apps: Wie, Warum, Womit?</title>
		<link>http://rueprich.de/bloggt/2011/10/web-devcon-mobile-web-apps</link>
		<comments>http://rueprich.de/bloggt/2011/10/web-devcon-mobile-web-apps#comments</comments>
		<pubDate>Wed, 12 Oct 2011 20:11:08 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Mobile Web Apps]]></category>
		<category><![CDATA[Präsentationen]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[XHTML & CSS]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=557</guid>
		<description><![CDATA[<p>Nächste Woche findet vom 17. &#8211; 18. Oktober die Web DevCon in Hamburg statt. Zusammen mit Stephan Schmidt werde ich ebenfalls dort sein. Stephan erklärt in seinem Vortrag &#8222;Continuous Integration mit Jenkins&#8220; die Vorteile des Einsatzes kontinuierlicher Integration am Beispiel von Jenkins. Am Dienstag führe ich unter dem Titel &#8222;Mobile Web Apps: Wie, Warum, Womit?&#8220; [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/10/web-devcon-mobile-web-apps">Mobile Web Apps: Wie, Warum, Womit?</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a class="image-link" href="http://www.web-devcon.de/Programm/Mobile-Web-Apps-Wie-Warum-Womit"><img src="/images/webDevConSpeaker.jpg" alt="Am 18. Oktober werde ich als Speaker an der Web DevCon teilnehmen" /></a> Nächste Woche findet vom 17. &#8211; 18. Oktober die Web DevCon in Hamburg statt. Zusammen mit <a title="Zum Blog von Stephan" href="http://blog.schst.net/">Stephan Schmidt</a> werde ich ebenfalls dort sein. Stephan erklärt in seinem Vortrag &#8222;<a href="http://www.web-devcon.de/Programm/Continuous-Integration-mit-Jenkins">Continuous Integration mit Jenkins</a>&#8220; die Vorteile des Einsatzes kontinuierlicher Integration am Beispiel von Jenkins. Am Dienstag führe ich unter dem Titel &#8222;<a href="http://www.web-devcon.de/Programm/Mobile-Web-Apps-Wie-Warum-Womit">Mobile Web Apps: Wie, Warum, Womit?</a>&#8220; in die Entwicklung von Mobile Web Apps ein. Mit dem Vortrag erkläre ich, was eine Web App von einer reinen Website unterscheidet und zeige anschließend welche Frameworks existieren, um die Entwicklung zu erleichtern.</p>
<p>Einen ersten &#8222;Testlauf&#8220; konnte ich mit dem Vortrag schon im Rahmen unserer Whiteboard Fridays auf der Arbeit absolvieren. Ich bin gespannt auf das Feedback aus Hamburg. Die Folien folgen kurz darauf bei Slideshare.</p>
<p><strong>Update:</strong> <a href="http://www.slideshare.net/holgerrueprich/mobile-web-apps-9764846" title="Mobile Web Apps" target="_blank">Die Folien sind inzwischen auf Slideshare verfügbar</a>.</p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/9764846" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/10/web-devcon-mobile-web-apps">Mobile Web Apps: Wie, Warum, Womit?</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2011/10/web-devcon-mobile-web-apps/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Package Chaos</title>
		<link>http://rueprich.de/bloggt/2011/07/package-chaos</link>
		<comments>http://rueprich.de/bloggt/2011/07/package-chaos#comments</comments>
		<pubDate>Mon, 04 Jul 2011 19:12:57 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Software-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=524</guid>
		<description><![CDATA[<p>Die Struktur unserer Packages ist aktuell recht chaotisch. Ohne Suchfunktion ist es kaum möglich eine Klasse zu finden. Da stellt sich die Frage: Arbeiten bei uns nur Chaoten? Oder Genies, die sich erst im Chaos wohl fühlen? Ich glaube weder das Eine noch das Andere. Unserer Package Struktur ist, wie so viele Dinge in der [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/07/package-chaos">Package Chaos</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Die Struktur unserer Packages ist aktuell recht chaotisch. Ohne  Suchfunktion ist es kaum möglich eine Klasse zu finden. Da stellt sich  die Frage: Arbeiten bei uns nur Chaoten? Oder Genies, die sich erst im  Chaos wohl fühlen? Ich glaube weder das Eine noch das Andere. Unserer  Package Struktur ist, wie so viele Dinge in der Software Entwicklung  entschuldigt werden, historisch gewachsen. D.h. Gründe gibt es diverse  und der Schmerz war bisher zu gering dem Einhalt zu gebieten.<br />
<span id="more-524"></span></p>
<h3>Als Ursachen sehe ich vor allem:</h3>
<ul>
<li>Neue Namen (Firmenname, Abteilungsname, Teamname, &#8230;) führen zu neuen Packages während alte bestehen bleiben.</li>
<li>Ohne  klare Struktur ist es schwierig, neue Klassen einzuordnen. Da die  vorhandenen Packages oft nicht passen, kommen fortlaufend neue hinzu.</li>
<li>Nicht  alle Entwickler haben den gleichen Hintergrund oder  das gleiche Wissen  über ein Thema und strukturieren Klassen  unterschiedlich.</li>
</ul>
<p>Das  größte Problem an diesem Chaos ist, dass Anforderungen mehrfach und  unterschiedlich gelöst werden. Klassen mit gleichen fachlichen Themen  sind auf unterschiedlichste Packages verteilt. Betroffene Stellen sind  bei Änderungen schwer zu finden und werden leicht übersehen.</p>
<h3>Raus aus dem Durcheinander</h3>
<p>Ich  bin kein großer Freund von langen Regelwerken und Forschriften, wie zu  entwickeln ist. Im Gegensatz bin ich davon überzeugt, dass sich eine  klare Package Struktur eigenständig durchsetzt, sobald sie vorhanden und  nachvollziehbar ist. Doch der Weg aus diesem Gewirr an Packages ist  müsig. Etliche Stellen im Code müssen angepasst werden. Unsere  Applikationen erstecken sich über mehrere Module hinweg, womit jede  Änderung mehrere Releases mit sich zieht. Konfigurationsdateien könnten  übersehen werden und Bugs im &#8222;Worst-Case&#8220; erst live festgestellt werden.  Getoppt wird dies durch Suberversion Baumkonflikte beim Mergen von  bereits laufenden Projekten.</p>
<p>Doch aller Anfang ist bekanntlich  schwer und so hilft nur eins &#8211; ran ans Werk! Mit dem ersten Schritt bin  ich gerade beschäftigt. Dabei werde ich alle alten Packages in neue  überführen, um die offensichtlich veralteten Strukturen abzuschaffen.  Danach werde ich die Anzahl der Top-Level Packages einschränken und  diese nach fachlichen Themen strukturieren. Ich bin überzeugt, dass sich  dieser Aufwand lohnt. Stück für Stück kristalisiert sich so die finale  Struktur der Packages heraus und es wird leichter neue Klassen  einzuordnen sowie bestehende Logik aufzufinden.</p>
<p>Die ersten  Packages habe ich angepasst bzw. entfernt. Dabei sind die ersten  redundaten und unbenuzten Klassen aufgefallen bzw. abgeschafft worden.  Sobald die Struktur steht, werden wir darauf aufbauend die Frage der  Abhängigkeit zwischen Packages angehen, also welches Package auf welches  andere Zugriff haben sollte oder auch nicht. Also Augen zu und durch.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2011/07/package-chaos">Package Chaos</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2011/07/package-chaos/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Expression Language 2.2 mit Maven und Tomcat</title>
		<link>http://rueprich.de/bloggt/2010/06/expression-language-2-2-mit-maven-und-tomcat</link>
		<comments>http://rueprich.de/bloggt/2010/06/expression-language-2-2-mit-maven-und-tomcat#comments</comments>
		<pubDate>Sun, 27 Jun 2010 21:51:26 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Software-Entwicklung]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=492</guid>
		<description><![CDATA[<p>Beim Einsatz von JSF 2.0 bin ich diese Woche auf ein kleines Problem gestoßen &#8211; der Aufruf von Methoden mit Parametern war mit der Expression Language nicht möglich. Seit der Version 2 der Expression Language wurde dieses Feature zur Verfügung gestellt. Da diese Version allerdings kein Teil der JSF 2.0 API ist, waren für den [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/06/expression-language-2-2-mit-maven-und-tomcat">Expression Language 2.2 mit Maven und Tomcat</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Beim Einsatz von JSF 2.0 bin ich diese Woche auf ein kleines Problem gestoßen &#8211; der Aufruf von Methoden mit Parametern war mit der Expression Language nicht möglich. Seit der Version 2 der Expression Language wurde dieses Feature zur Verfügung gestellt. Da diese Version allerdings kein Teil der JSF 2.0 API ist, waren für den Einsatz im Tomcat noch ein paar kleinere Anpassungen nötig.</p>
<p><span id="more-492"></span></p>
<p><strong>Dependencies</strong><br />
Zuerst muss die Expression Language API sowie die dazugehörige Implementierung aus dem Maven Repository von java.net in das Projekt eingebunden werden.</p>
<pre class="brush:xml">&lt;dependency&gt;
  &lt;groupId&gt;javax.el&lt;/groupId&gt;
  &lt;artifactId&gt;el-api&lt;/artifactId&gt;
  &lt;version&gt;2.2&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
  &lt;groupId&gt;org.glassfish.web&lt;/groupId&gt;
  &lt;artifactId&gt;el-impl&lt;/artifactId&gt;
  &lt;version&gt;2.2&lt;/version&gt;
&lt;/dependency&gt;</pre>
<pre class="brush:xml">&lt;repository&gt;
  &lt;id&gt;maven2-repository.dev.java.net&lt;/id&gt;
  &lt;name&gt;Java.net Repository for Maven&lt;/name&gt;
  &lt;url&gt;http://download.java.net/maven/2&lt;/url&gt;
&lt;/repository&gt;</pre>
<p><strong>Verwendung der neuen Expression Language</strong><br />
Um die neue Version der Expression Language zu verwenden, muss die ExpressionFactory anschließend in der web.xml registriert werden.</p>
<pre class="brush:xml">&lt;context-param&gt;
  &lt;param-name&gt;com.sun.faces.expressionFactory&lt;/param-name&gt;
  &lt;param-value&gt;com.sun.el.ExpressionFactoryImpl&lt;/param-value&gt;
&lt;/context-param&gt;
</pre>
<p>Und damit lassen sich nun auch Parameter an Methoden per Expression Language übergeben.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/06/expression-language-2-2-mit-maven-und-tomcat">Expression Language 2.2 mit Maven und Tomcat</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2010/06/expression-language-2-2-mit-maven-und-tomcat/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Clean Code Dojo</title>
		<link>http://rueprich.de/bloggt/2010/06/clean-code-dojo</link>
		<comments>http://rueprich.de/bloggt/2010/06/clean-code-dojo#comments</comments>
		<pubDate>Mon, 14 Jun 2010 21:26:53 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Agile Entwicklung]]></category>
		<category><![CDATA[Clean Code]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=471</guid>
		<description><![CDATA[<p>Ein Code Dojo ist ein Treffen von Programmierern mit dem Ziel eine bestimmte Programmieraufgabe zu lösen um dabei Neues zu lernen. Die Idee stammt ursprünglich von Chad Fowler, der in seinem Blog über Code Katas schreibt. Der Begriff Kata steht für eine Übung beim Karate, die immer wiederholt wird, um Schritt für Schritt besser zu [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/06/clean-code-dojo">Clean Code Dojo</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><img class="blog-image" src="/images/clean-code-dojo.jpg" alt="Clean Code Dojo" /> Ein Code Dojo ist ein Treffen von Programmierern mit dem Ziel eine bestimmte Programmieraufgabe zu lösen um dabei Neues zu lernen. Die Idee stammt ursprünglich von <a title="Der Blog von Chad Fowler" href="http://pragdave.pragprog.com/">Chad Fowler</a>, der in seinem Blog über <a title="Code Katas von Chad Fowler" href="http://codekata.pragprog.com">Code Katas</a> schreibt. Der Begriff Kata steht für eine Übung beim Karate, die immer wiederholt wird, um Schritt für Schritt besser zu werden. Ähnlich wie beim Karate ist es nach Fowler auch bei der Musik. Um ein guter Musiker zu werden, ist es wertvoll die Mechanik des Instruments zu verstehen, die Theorien zu kennen und Talent zu haben. Am wichtigsten ist aber die Übung. Das Gleiche gilt für Entwickler &#8211; um ein guter Entwickler zu werden, ist es wichtig die benötigten Programmiersprachen zu kennen, die Theorien zu verstehen und Talent zu haben. Um wirklich gut zu werden, ist vor allem viel Übung entscheidend.</p>
<p><span id="more-471"></span></p>
<p>Entwickler üben in der Regel direkt bei der  Arbeit und verursachen damit auch hier die meisten Fehler. Mit den Code Katas beschreibt Chad Fowler eine Möglichkeit dem entgegen zu wirken. Jedes Code Kata stellt eine Programmieraufgabe dar, die immer wiederholt werden kann, um Stück für Stück besser zu werden. Mit jeder Wiederholung können die Aufgaben z.B. in kürzerer Zeit, mit anderen Sprachen, in weniger Zeilen oder mit anderen Tools durchgeführt werden. Wichtig ist, dass man Spaß an der Aufgabe hat und etwas dabei lernen kann. Chad Fowler hat in seinem Blog seither 21 solcher Code Katas veröffentlicht.</p>
<p><a title="Der Blog von Laurent Bossavit" href="http://bossavit.com/dojo/">Laurent Bossavit</a> nahm diese Idee mit einigen weiteren Entwicklern auf und organisierte das erste bekannte Code Dojo. Also ein Treffen von Entwicklern, die gemeinsam versuchen ein bestimmtes Code Kata zu lösen. Mittlerweile gibt es solche Treffen immer öfter. In Deutschland organisiert z.B. die <a title="Code Dojos der Münchner .Net-User-Group" href="http://www.gmbsg.com/go/mucnetdojo">Münchner .Net-User-Group</a> regelmäßige Code Dojos, in <a title="Code Dojos in Finnland" href="http://wiki.agilefinland.com/?CodingDojo">Finnland</a> wird darüber berichtet oder bei der <a title="Code Dojo der Universtiät von Houston" href="http://www.codedojo.org/">Universität von Houston</a>.</p>
<h3>Und was steckt hinter dem Clean Code Dojo?</h3>
<p>Bei meiner Arbeit beschäftige ich mich sehr viel mit der Frage, wie wir unsere &#8211; über die Jahre gewachsene &#8211; Anwendung für die Zukunft wartbar halten können. Wie wir alten Code testbar machen und Stück für Stück aufräumen können. In einigen Diskussionen und Büchern bin ich dabei auf Code Reviews als Mittel gestoßen. Meine Befürchtung war allerdings, dass ein Review zu passiv verlaufen würde. Wenn eine Gruppe von 10 Leuten (um einen Beamer verteilt) über Code diskutiert, ist die Chance recht hoch, dass einige Diskussionen nur für wenige von Interesse sind und so mehr und mehr Leute abschalten und nur passiv &#8222;beisitzen&#8220;.</p>
<p>Unser Freelancer Florian brachte vor einer Weile das Thema wieder auf und fragte, warum wir nicht gemeinsam in kleineren Gruppen eine Aufgabe vornehmen und gemeinsam unseren Code testen, aufräumen und neu organisieren. Durch die kleineren Gruppen ist so jeder aktiver beim Thema und kann aus den einzelnen Diskussionen viel mehr für sich mitnehmen. Diese Idee fand ich spitze. Und mit meiner Vorliebe für das Buch <a title="Clean Code bei Amazon" href="http://www.amazon.de/gp/product/0132350882?ie=UTF8&amp;tag=rueprichde-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0132350882">Clean Code</a> war der Name bald gefunden &#8211; Clean Code Dojo.</p>
<p>Als Zeitrahmen für unsere Treffen haben wir fürs erste drei Stunden gewählt. Auf einer Wiki-Seite werden mögliche Aufgaben gesammelt. Für jedes Treffen wollen wir uns genau eines dieser Ziele vornehmen. Die Entscheidung darüber fällt direkt zu Beginn eines Treffens. Letzten Donnerstag haben wir den ersten Versuch gestartet und damit begonnen sämtliche Coding Stylequide Violations zu beseitigen. Das Ziel war für den Anfang noch sehr einfach und passt nicht zu 100% in die Form eines Code Katas, doch es ergaben sich bereits hierbei einige interessante Diskussionen und viele Aufgaben für kommende Clean Code Dojos. Innerhalb der drei Stunden haben wir in ca. 300 Klassen 3000 Zeilen Code angepasst. Es wurde einiges gelernt und viel gelacht. Meiner Meinung nach ein Erfolg auf ganzer Linie.</p>
<p>Die kommenden Wochen werden zeigen, wie es weiter geht. Wir werden uns ab jetzt alle zwei Wochen treffen. Ich hoffe, dass die Motivation anhält, weiterhin viel gelernt wird und die Ergebnisse den Erfolg bestätigen.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/06/clean-code-dojo">Clean Code Dojo</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2010/06/clean-code-dojo/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JSF 2.0 mit Maven und Tomcat</title>
		<link>http://rueprich.de/bloggt/2010/04/jsf-2-0-mit-maven-und-tomcat</link>
		<comments>http://rueprich.de/bloggt/2010/04/jsf-2-0-mit-maven-und-tomcat#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:41:16 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Software-Entwicklung]]></category>
		<category><![CDATA[Web-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=444</guid>
		<description><![CDATA[<p>Die Einrichtung eines JSF Maven Projekts in Kombination mit dem Tomcat-Plugin stellte mich vor einige kleine Einstiegshürden. Welche Dependencies sind nötig? Wo finden sich die passenden Jar-Files? Und warum werden die Managed Beans von JSF beim Starten des Tomcats nicht initialisiert? Hier daher die Schritte zur Einrichtung eines solchen Projekts. Projekt anlegen Um das Projekt [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/04/jsf-2-0-mit-maven-und-tomcat">JSF 2.0 mit Maven und Tomcat</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Die Einrichtung eines JSF Maven Projekts in Kombination mit dem Tomcat-Plugin stellte mich vor einige kleine Einstiegshürden. Welche Dependencies sind nötig? Wo finden sich die passenden Jar-Files? Und warum werden die Managed Beans von JSF beim Starten des Tomcats nicht initialisiert? Hier daher die Schritte zur Einrichtung eines solchen Projekts.<br />
<span id="more-444"></span></p>
<h2>Projekt anlegen</h2>
<p>Um das Projekt initial anzulegen habe ich einen der Standard Maven Archetypes verwendet.</p>
<pre class="brush:bash">mvn archetype:generate
-&gt; 18 maven-archetype-webapp (A simple Java web application)
</pre>
<p><strong>Dependencies</strong><br />
Als Dependencies werden die JSF-API samt Implementierung, die Servlet API sowie JavaServer Pages Standard Tag Library (JSTL) verwendet.</p>
<pre class="brush:xml">&lt;dependency&gt;
  &lt;groupId&gt;com.sun.faces&lt;/groupId&gt;
  &lt;artifactId&gt;jsf-api&lt;/artifactId&gt;
  &lt;version&gt;2.0.2&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
  &lt;groupId&gt;com.sun.faces&lt;/groupId&gt;
  &lt;artifactId&gt;jsf-impl&lt;/artifactId&gt;
  &lt;version&gt;2.0.2&lt;/version&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
  &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
  &lt;artifactId&gt;servlet-api&lt;/artifactId&gt;
  &lt;version&gt;2.5&lt;/version&gt;
  &lt;scope&gt;provided&lt;/scope&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
  &lt;groupId&gt;javax.servlet&lt;/groupId&gt;
  &lt;artifactId&gt;jstl&lt;/artifactId&gt;
  &lt;version&gt;1.2&lt;/version&gt;
&lt;/dependency&gt;</pre>
<p><strong>Repository</strong><br />
Die JSF API sowie dazu gehörige Implementierung finden sich im Maven Repository von Java.net.<strong><br />
</strong></p>
<pre class="brush:xml">&lt;repository&gt;
  &lt;id&gt;maven2-repository.dev.java.net&lt;/id&gt;
  &lt;name&gt;Java.net Repository for Maven&lt;/name&gt;
  &lt;url&gt;http://download.java.net/maven/2&lt;/url&gt;
&lt;/repository&gt;</pre>
<p><strong>Plugins</strong><br />
Zu guter letzt wird der Tomcat wie folgt konfiguriert.</p>
<pre class="brush:xml">&lt;plugin&gt;
  &lt;groupId&gt;org.codehaus.mojo&lt;/groupId&gt;
  &lt;artifactId&gt;tomcat-maven-plugin&lt;/artifactId&gt;
&lt;/plugin&gt;</pre>
<h2>Eclipse konfigurieren</h2>
<p>Zur Unterstützung der Code Completion für JSF Taglibs muss der Dateityp der JSF-Dateien (in meinem Fall .xhtml) dem Content Type JSP zugeordnet werden:</p>
<pre>Window &gt; Preferences &gt; General &gt; Content Types &gt; Text &gt; JSP &gt; Add (xhtml)</pre>
<p></p>
<h2>Projekt mit Tomcat starten</h2>
<p>Wird das Projekt über Maven mittels <code>mvn tomcat:run</code> gestartet, gibt es ein Problem: Sämtliche @ManagedBeans(s) werden nicht initialisiert und können somit nicht verwendet werden. JSF sucht an zwei Stellen nach annotierten Klassen &#8211; unter <code>WEB-INF/classes</code> sowie in den jar-Files im Classpath. Sowohl das Verzeichnis <code>WEB-INF/classes</code> als auch das Verzeichnis <code>WEB-INF/lib</code> existiert allerdings nur sofern das Projekt mittels Maven zum war-Archiv gepackt wurde. Um dieses Problem zu lösen, muss das Projekt mittels <code>mvn tomcat:run-war</code> gestartet werden.</p>
<p>Will man das Packen des Projekts mit jeder Änderung umgehen, gibt es eine weitere Möglichkeit:</p>
<pre class="brush:xml">&lt;build&gt;
  &lt;outputDirectory&gt;src/main/webapp/WEB-INF/classes&lt;/outputDirectory&gt;
&lt;/build&gt;
</pre>
<p>Der Nachteil an dieser Lösung ist allerdings, dass man die gesamten class-Files im src-Verzeichnis ablegt.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/04/jsf-2-0-mit-maven-und-tomcat">JSF 2.0 mit Maven und Tomcat</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2010/04/jsf-2-0-mit-maven-und-tomcat/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>// Kommentare im Code</title>
		<link>http://rueprich.de/bloggt/2010/02/kommentare-im-code</link>
		<comments>http://rueprich.de/bloggt/2010/02/kommentare-im-code#comments</comments>
		<pubDate>Mon, 01 Feb 2010 22:03:28 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Software-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=289</guid>
		<description><![CDATA[<p>In dem Artikel &#8222;Verwenden Sie keine Verneinung nicht!&#8220; schreibt Stephan Schmidt: &#8222;Wenn ich es schaffe, eine if-Anweisung zu vermeiden, dann versüßt mir das immer meinen Tag.&#8220; Ganz ähnlich geht mir das mit Kommentaren. Nicht, dass ich Kommentare im Quelltext per se für eine schlechte Sache halte. Es gibt kaum etwas Hilfreicheres als ein gut platziertes [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/02/kommentare-im-code">// Kommentare im Code</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>In dem Artikel &#8222;<a title="Verwenden Sie keine Verneinung nicht bei blog.schst.net" href="http://blog.schst.net/2010/01/verwenden-sie-keine-verneinung-nicht/">Verwenden Sie keine Verneinung nicht!</a>&#8220; schreibt Stephan Schmidt: &#8222;Wenn ich es schaffe, eine if-Anweisung zu vermeiden, dann versüßt mir das immer meinen Tag.&#8220; Ganz ähnlich geht mir das mit Kommentaren. Nicht, dass ich Kommentare im Quelltext per se für eine schlechte Sache halte. Es gibt kaum etwas Hilfreicheres als ein gut platziertes Kommentar. Allerdings gibt es auch kaum etwas Schlechteres als veraltete Kommentare, die den Quelltext unötig aufblasen, den Leser falsch informieren und in die Irre führen.</p>
<p><span id="more-289"></span></p>
<p>Software wird ständig erweitert und angepasst. Aufgrund mangelnder Disziplin und der Hektik im Projektalltag gilt dies in der Regel allerdings nicht gleichzeitig für Kommentare. Je älter ein Kommentar ist, desto höher ist die Wahrscheinlichkeit, dass es nicht mehr dem aktuellen Verhalten der Software entspricht.</p>
<h3>Wann handelt es sich um ein schlechtes Kommentar?</h3>
<p>Neben dem häufigen Grund, dass Kommentare veraltet sind, gibt es auch ein paar weitere Beispiele, die ich euch nicht vorenthalten möchte.</p>
<p><strong>Positionsmarkierungen</strong><br />
Postitionsmarkierungen sind Kommentare, die größere Abschnitte im Code in einzelne kleinere Teile trennen. Anstatt Code durch Kommentare zu separieren, sollten die jeweiligen Abschnitte besser als eigenständige Methoden extrahiert werden.</p>
<pre class="brush:java">// **** Form Upload ****
....
// **** Input Validation ****
....</pre>
<p><strong>Auskommentierter Code</strong><br />
Ein großer &#8222;Freund&#8220; bin ich vor allem von auskommentiertem Code. Nicht nur, dass die Aussagekraft von auskommentiertem Code gegen null geht. Schlimmer ist, dass jeder weitere Entwickler, der über diesen Code stößt, denken wird, dass dieser aus einem bestimmten Grund überlassen wurde. Mit der Zeit verändert sich der umliegende Code und das Kommentar verliert immer mehr an Bedeutung und führt einzig und allein zu Verwirrungen.</p>
<p>In der heutigen Zeit wird jeder Stand bei größeren Software-Projekten mit Hilfe von Versionsverwaltungssystemen wie Subversion, Git oder CVS gesichert. Wird eine bestimmte Funktionalität nicht mehr benötigt, sollte diese schlicht weg gelöscht werden. Mit einem aussagekräftigen Kommentar im Versionsverwaltungssystem, erklärt sich auch viel besser aus welchem Grund diese Funktionalität entfernt wurde.</p>
<p><strong>Redundante Kommentare<br />
</strong>Kommentare, die nichts weiter aussagen als der beschriebene Code selbst.<strong><br />
</strong></p>
<pre class="brush:java">/**
 * Get the car
 */
public Car getCar() { return car; }

/** The name */
private String name;</pre>
<h3>Gibt es auch sinnvolle Kommentare?</h3>
<p>Wie bereits geschrieben halte ich nicht alle Kommentare für unnötig und schlecht. Zum Ausgleich daher auch einige Beispiele für den sinnvollen Einsatz von Kommentaren.</p>
<p><strong>@todo-Kommentare</strong><br />
Die meisten IDEs unterstützen Entwickler durch die Erkennung von @todo-Kommentaren im Code. Werden diese nicht nur als Ausrede verwendet, um unsauberen Code liegen zu lassen, ist der Einsatz solcher Kommentare auf jeden Fall in Ordnung.</p>
<p><strong>Informative Kommentare</strong><br />
Sinnvoll finde ich auch Kommentare, die Informationen zum Kontext des Quelltext liefern. Wurde der Code beispielsweise durch einen Bugfix auf eine ungewöhnliche aber erforderliche Weise angepasst, ist es ratsam die entsprechende Stelle mit einem Kommentar zu versehen.</p>
<p><strong>Kommentare in öffentlichen APIs</strong><br />
Eine gut dokumentierte öffentliche API ist für Entwickler ein Segen. Allerdings gilt diese Aussage nur, sofern die Dokumentation auf aktuellem Stand gehalten wird und dem Entwickler zusätzliche Informationen bietet. Kommentare für Setter und Getter halte ich auch in öffentlichen APIs für unnötig.</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/02/kommentare-im-code">// Kommentare im Code</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2010/02/kommentare-im-code/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clean Code mit Hilfe der Pfadfinder-Regel</title>
		<link>http://rueprich.de/bloggt/2010/01/clean-code-mit-hilfe-der-pfadfinder-regel</link>
		<comments>http://rueprich.de/bloggt/2010/01/clean-code-mit-hilfe-der-pfadfinder-regel#comments</comments>
		<pubDate>Sun, 17 Jan 2010 23:12:27 +0000</pubDate>
		<dc:creator><![CDATA[Holger]]></dc:creator>
				<category><![CDATA[Clean Code]]></category>
		<category><![CDATA[Software-Entwicklung]]></category>

		<guid isPermaLink="false">http://rueprich.de/?p=359</guid>
		<description><![CDATA[<p>Nach unserem Vortrag &#8222;Die Kunst des Software Design&#8220; auf dem PHP World Kongress, diskutierten Stephan und ich noch eine Weile darüber, wie man eine bestehende Anwendung im laufenden Betrieb am besten aufräumt. Ist eine Anwendung lang genug in Betrieb und groß genug, kommt oft der Ruf nach einem groß angelegten Refactoring-Projekt. Ein Projekt, in dem [&#8230;]</p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/01/clean-code-mit-hilfe-der-pfadfinder-regel">Clean Code mit Hilfe der Pfadfinder-Regel</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="/images/die-pfadfinder-regel.jpg" title="Das Poster für die Pfadfinder-Regel"><img src="http://rueprich.de/images/die-pfadfinder-regel-small.jpg" alt="Die Pfadfinder-Regel" /></a></p>
<p>Nach unserem Vortrag &#8222;<a title="Die Kunst des Software Design beim PHP Word Kongress" href="http://rueprich.de/bloggt/2009/12/php-world-kongress-2009">Die Kunst des Software Design</a>&#8220; auf dem <a title="Die Website des PHP World Kongress" href="http://www.phpworld-kongress.de">PHP World Kongress</a>, diskutierten <a title="Der Blog von Stephan Schmidt" href="http://blog.schst.net">Stephan</a> und ich noch eine Weile darüber, wie man eine bestehende Anwendung im laufenden Betrieb am besten aufräumt. Ist eine Anwendung lang genug in Betrieb und groß genug, kommt oft der Ruf nach einem groß angelegten Refactoring-Projekt. Ein Projekt, in dem Entwickler endlich einmal die Zeit haben Dinge, die schon seit langer Zeit im Argen liegen, aufzuräumen und die Anwendung wieder in Ordnung zu bringen. In den wenigsten Fällen werden solche Projekte allerdings genehmigt oder entsprechend priorisiert.</p>
<p><span id="more-359"></span></p>
<p><a title="Robert C. Martin bei Object Mentor" href="http://www.objectmentor.com/omTeam/martin_r.html">Robert C. Martin</a> schreibt in seinem Buch <a title="Clean Code bei Amazon" href="http://www.amazon.de/gp/product/0132350882?ie=UTF8&amp;tag=rueprichde-21&amp;linkCode=as2&amp;camp=1638&amp;creative=6742&amp;creativeASIN=0132350882">Clean Code</a>, dass Code über die gesamte Lebensdauer &#8222;sauber&#8220; gehalten werden muss und findet dafür eine treffende Regel der amerikanischen Pfadfinder: &#8222;Leave the campground cleaner than you found it&#8220;. Der einzelne Schritt beim Aufräumen muss dabei gar nicht groß sein. Ob eine lange Methode aufgebrochen, eine Duplikation eliminiert oder der Name einer Variable in einen ausdrucksvolleren Namen geändert wird, spielt dabei keine Rolle. Wenn der Code einer Anwendung mit jedem Commit ein kleines Stück sauberer wird, als er es zuvor war, wird die gesamte Anwendung nicht verrotten (siehe auch <a title="Browen-Window-Theorie bei Wikipedia" href="http://de.wikipedia.org/wiki/Broken-Windows-Theorie">Broken-Window-Theorie</a>).</p>
<p>Letztendlich sind wir zu dem Entschluss gekommen, dass in dem für gewöhnlich hektischen Alltag der Weg von Robert C. Martin genau der Richtige ist. Der Fokus bei der Entwicklung liegt allerdings eher auf einem konkreten TODO, anstatt auf dem Aufräumen der Codebasis. Probleme im Code werden zwar oft erkannt, aber nie korrigiert, da man gerade an etwas anderem dran ist. Aus diesem Grund wollten wir ein Poster gestalten, das einige kleine &#8222;Aufräum-Arbeiten&#8220; auflistet und dazu ermuntert in kleinen Schritten das große Ziel zu erreichen. Nachdem Stephan bereits die Punkte gesammelt hatte, habe ich heute das Poster fertig gestellt. Ich bin gespannt, wie es ankommt und zu welchem Ergebnis es führen wird.</p>
<p><a href="/images/die-pfadfinder-regel-a4.jpg" title="Die Pfadfinder-Regel in A4" class="jpg">Die Pfadfinder-Regel als A4 Poster <span>als JPEG zum Download (ca. 1.1 MB)</span></a></p>
<p>Der Beitrag <a rel="nofollow" href="http://rueprich.de/bloggt/2010/01/clean-code-mit-hilfe-der-pfadfinder-regel">Clean Code mit Hilfe der Pfadfinder-Regel</a> erschien zuerst auf <a rel="nofollow" href="http://rueprich.de">Holger Rüprich</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rueprich.de/bloggt/2010/01/clean-code-mit-hilfe-der-pfadfinder-regel/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
