<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Kommentare zu: Refactoring von C++</title>
	<link>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/</link>
	<description>Agile Software Entwicklung, Berichte, Anmerkungen und Politisches</description>
	<pubDate>Wed, 08 Feb 2012 19:30:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>

	<item>
		<title>Von: Jens Coldewey</title>
		<link>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-549</link>
		<author>Jens Coldewey</author>
		<pubDate>Fri, 12 Sep 2008 10:27:59 +0000</pubDate>
		<guid>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-549</guid>
		<description>Hallo Daniel,

natürlich hast Du Recht, dass man auch in C++ gute Systeme bauen kann. Das ist ja auch geschehen, schließlich gibt es sehr viele erfolgreiche Systemem mit C++ vor allem im technischen Umfeld.

Meine Erfahrung ist aber auch, dass die meisten C++ Systeme im C/S- oder Webumfeld, die ich bisher gesehen habe, genau nicht klein modularisiert und entkoppelt waren. Und dass dann zu zerlegen ist ein (technischer und wirtschaftlicher) Albtraum. Und die Werkzeugunterstützung ist für Systeme &gt;500 Klassen eine schlichte Katastrophe.

Ich glaube aber auch, dass es dafür viele sprach-inherente Gründe gibt, wie Redundanz in den Headerfiles, das Typsystem und viele goldene Henkel, die eine Automatisierung derart erschweren, dass Refactoring extrem schwierig wird. Dazu kommt noch, dass das verbreitetste Werkzeug Visual Studio keinen vollständigen AST aller Klassen eines Workspaces hält, sondern eher eine klassische Compiler-Linker-Toolkette ist mit ein paar GUI-Gimmicks vorne dran (Visual Studio für .NET ist da deutlich besser implementiert!). 

Alles in allem eine sehr frustrierende Angelegenheit, insbesondere wenn man sich anschaut, was Werkzeuge wie Eclipse oder TogetherJ da seit fast zehn Jahren vormachen. Und noch dazu bei der Produktivität der Entwickler ein Desaster (für die Manager unter den Bloglesern :-)</description>
		<content:encoded><![CDATA[<p>Hallo Daniel,</p>
<p>natürlich hast Du Recht, dass man auch in C++ gute Systeme bauen kann. Das ist ja auch geschehen, schließlich gibt es sehr viele erfolgreiche Systemem mit C++ vor allem im technischen Umfeld.</p>
<p>Meine Erfahrung ist aber auch, dass die meisten C++ Systeme im C/S- oder Webumfeld, die ich bisher gesehen habe, genau nicht klein modularisiert und entkoppelt waren. Und dass dann zu zerlegen ist ein (technischer und wirtschaftlicher) Albtraum. Und die Werkzeugunterstützung ist für Systeme >500 Klassen eine schlichte Katastrophe.</p>
<p>Ich glaube aber auch, dass es dafür viele sprach-inherente Gründe gibt, wie Redundanz in den Headerfiles, das Typsystem und viele goldene Henkel, die eine Automatisierung derart erschweren, dass Refactoring extrem schwierig wird. Dazu kommt noch, dass das verbreitetste Werkzeug Visual Studio keinen vollständigen AST aller Klassen eines Workspaces hält, sondern eher eine klassische Compiler-Linker-Toolkette ist mit ein paar GUI-Gimmicks vorne dran (Visual Studio für .NET ist da deutlich besser implementiert!). </p>
<p>Alles in allem eine sehr frustrierende Angelegenheit, insbesondere wenn man sich anschaut, was Werkzeuge wie Eclipse oder TogetherJ da seit fast zehn Jahren vormachen. Und noch dazu bei der Produktivität der Entwickler ein Desaster (für die Manager unter den Bloglesern <img src='http://blog.coldewey.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: daniel</title>
		<link>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-548</link>
		<author>daniel</author>
		<pubDate>Wed, 10 Sep 2008 09:20:31 +0000</pubDate>
		<guid>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-548</guid>
		<description>Hmmmm,

Also mal zu c++: c++ ist meiner meinung nach die einzige portable high-level sprache di ohne vom auskommt. c# ist microsoft spezifisch, objective-c apple, java ist eigentlich schon eine eigene plattform (es gibt ja sogar schon den java desktop). ausserdem kann man in c++ highlevel konstrukte (objekte, reference counting, abstrahierte io, funktionale paradigmen, operator overloading etc.) fast ohne runtime penalty machen.

zur kompilation: ja, du musst natürlich kleine bausteine bilden, aber nicht unbedingt um bilbiothejen zu bauen, sondern um das kompilat (*.o) zu cachen, und parallel zu kompilieren. komplett rekompilieren sollte man eh selten, und ausserdem sollte irgendwo im team ein schneller kompilationsrechner stehen, den man per distcc ansteuern kann. wenn das alles gegeben ist glaube ich kaum, dass du oft kompilationszeiten von mehr als ein paar minuten hast.

und: ja, es gibt viele wege etwas zu machen. man muss sich schon selbst überlegen, welches tool das beste für ein bestimmtes problem ist, aber es gibt auch ne menge bücher die man lesen kann. ausserdem gibt es die stl und boost, die viele standardlösungen vorschlagen.

was refactoring angeht: da fehlt sicher was (gibt es da nix kommerzielles? strange...). aber: man kann sowas ähnliches heute schohn mit gccxml machen, und bald auch mit clang (clang.llvm.org).

Gruss</description>
		<content:encoded><![CDATA[<p>Hmmmm,</p>
<p>Also mal zu c++: c++ ist meiner meinung nach die einzige portable high-level sprache di ohne vom auskommt. c# ist microsoft spezifisch, objective-c apple, java ist eigentlich schon eine eigene plattform (es gibt ja sogar schon den java desktop). ausserdem kann man in c++ highlevel konstrukte (objekte, reference counting, abstrahierte io, funktionale paradigmen, operator overloading etc.) fast ohne runtime penalty machen.</p>
<p>zur kompilation: ja, du musst natürlich kleine bausteine bilden, aber nicht unbedingt um bilbiothejen zu bauen, sondern um das kompilat (*.o) zu cachen, und parallel zu kompilieren. komplett rekompilieren sollte man eh selten, und ausserdem sollte irgendwo im team ein schneller kompilationsrechner stehen, den man per distcc ansteuern kann. wenn das alles gegeben ist glaube ich kaum, dass du oft kompilationszeiten von mehr als ein paar minuten hast.</p>
<p>und: ja, es gibt viele wege etwas zu machen. man muss sich schon selbst überlegen, welches tool das beste für ein bestimmtes problem ist, aber es gibt auch ne menge bücher die man lesen kann. ausserdem gibt es die stl und boost, die viele standardlösungen vorschlagen.</p>
<p>was refactoring angeht: da fehlt sicher was (gibt es da nix kommerzielles? strange&#8230;). aber: man kann sowas ähnliches heute schohn mit gccxml machen, und bald auch mit clang (clang.llvm.org).</p>
<p>Gruss</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Johannes</title>
		<link>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-2</link>
		<author>Johannes</author>
		<pubDate>Thu, 29 Nov 2007 11:58:58 +0000</pubDate>
		<guid>http://blog.coldewey.com/agile/2007/11/27/refactoring-von-c/#comment-2</guid>
		<description>Sehr schöne Zusammenfassung, die auch zeigt, dass früher nicht alles besser war :-)</description>
		<content:encoded><![CDATA[<p>Sehr schöne Zusammenfassung, die auch zeigt, dass früher nicht alles besser war <img src='http://blog.coldewey.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p>
]]></content:encoded>
	</item>
</channel>
</rss>

