<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Observations on TDD in C++ (long)</title>
    <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Observations on TDD in C++ (long)</title>
      <description>&lt;p&gt;I spent all of June mentoring teams on &lt;span class="caps"&gt;TDD&lt;/span&gt; in C++ with some Java. While C++ was my language of choice through most of the 90&amp;#8217;s, I think far too many teams are using it today when there are better options for their particular needs.&lt;/p&gt;


	&lt;p&gt;During the month, I took notes on all the ways that C++ development is less productive than development in languages like Java, particular if you try to practice &lt;span class="caps"&gt;TDD&lt;/span&gt;. I&amp;#8217;m not trying to start a language flame war. There are times when C++ is the appropriate tool, as we&amp;#8217;ll see.&lt;/p&gt;


	&lt;p&gt;Most of the points below have been discussed before, but it is useful to list them in one place and to highlight a few particular observations.&lt;/p&gt;


	&lt;p&gt;Based on my observations last month, as well as previously experience, I&amp;#8217;ve come to the conclusion that &lt;span class="caps"&gt;TDD&lt;/span&gt; in C++ is about an &lt;em&gt;order of magnitude&lt;/em&gt; slower than &lt;span class="caps"&gt;TDD&lt;/span&gt; in Java. Mostly, this is due to poor or non-existent tool support for automated refactorings, no error detection as you type, and the requirement to compile and link an executable test.&lt;/p&gt;


	&lt;p&gt;So, here is my list of impediments that I encountered last month. I&amp;#8217;ll mostly use Java as the comparison language, but the arguments are more or less the same for C# and the popular dynamic languages, like Ruby, Python, and Smalltalk. Note that the dynamic languages tend to have less complete tool support, but they make up for it in other ways (off-topic for this blog).&lt;/p&gt;


	&lt;h3&gt;Getting Started&lt;/h3&gt;


	&lt;p&gt;There is more setup effort involved in configuring your build environment to use your chosen unit testing framework (&lt;em&gt;e.g.&lt;/em&gt;, CppUnit) and to create small executables, one each for a single or a few tests. Creating many small tests, rather than one big test (&lt;em&gt;e.g.&lt;/em&gt;, a variant of the actual application). This is important to minimize the &lt;span class="caps"&gt;TDD&lt;/span&gt; cycle.&lt;/p&gt;


	&lt;p&gt;Fortunately, this setup is a one-time &amp;#8220;charge&amp;#8221;. The harder part, if you have legacy code, is refactoring it to break hard dependencies so you can write unit tests. This is true for legacy code in any language, of course.&lt;/p&gt;


	&lt;h3&gt;Complex Syntax&lt;/h3&gt;


	&lt;p&gt;C++ has a very complex syntax. This makes it hard to parse, limiting the capabilities of automated tools and slowing build times (more below).&lt;/p&gt;


	&lt;p&gt;The syntax also makes it harder to program in the language and not just for novices. Even for experts, the &lt;em&gt;visual noise&lt;/em&gt; of pointer and reference syntax obscures the story the code is trying to tell. That is, C++ code is inherently less &lt;em&gt;clean&lt;/em&gt; than code in most other languages in widespread use.&lt;/p&gt;


	&lt;p&gt;Also, the need for the developer to remember whether each variable is a pointer, a reference, or a &amp;#8220;value&amp;#8221;, and how to manage its life-cycle, requires mental effort that could be applied to the logic of the code instead.&lt;/p&gt;


	&lt;h3&gt;Obsolete Tool Support&lt;/h3&gt;


	&lt;p&gt;No editor or &lt;span class="caps"&gt;IDE&lt;/span&gt; supports non-trivial, automated refactorings. (Some do simple refactorings like &amp;#8220;rename&amp;#8221;.) This means you have to resort to tedious, slow, and error-prone manual refactorings. &lt;strong&gt;Extract Method&lt;/strong&gt; is made worse by the fact that you usually have to edit two files, an implementation and a header file.&lt;/p&gt;


	&lt;p&gt;There are no widely-used tools that provide on-the-fly parsing and error indications. This alone increases the time between typing an error and learning about it by an order of magnitude. Since a build is usually required, you tend to type a lot between builds, thereby learning about many errors at once. Working through them takes time. (There may be some commercial tools with limited support for on-the-fly parsing, but they are not widely used.)&lt;/p&gt;


	&lt;p&gt;Similarly, none of the common development tools support incremental loading of object code that could be used for faster unit testing and hence a faster &lt;span class="caps"&gt;TDD&lt;/span&gt; cycle. Most teams just build executables. Even when they structure the build process to generate small, focused executables for unit tests, the &lt;span class="caps"&gt;TDD&lt;/span&gt; cycle times remain much longer than for Java.&lt;/p&gt;


	&lt;p&gt;Finally, while there is at least one mocking framework available for C++, it is much harder to use than comparable frameworks in newer languages.&lt;/p&gt;


	&lt;h3&gt;Manual Memory Management&lt;/h3&gt;


	&lt;p&gt;We all know that manual memory management leads to time spent finding and fixing memory errors and leaks. Avoiding these problems in the first place also consumes a lot of thought and design effort. In Java, you just spend far less time thinking about &amp;#8220;who owns this object and is therefore responsible for managing its life-cycle&amp;#8221;.&lt;/p&gt;


	&lt;h4&gt;Dependency Management&lt;/h4&gt;


	&lt;p&gt;Intelligent handling of include directives is entirely up to the developer. We have all used the following &amp;#8220;guard&amp;#8221; idiom:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;    #ifndef MY_CLASS_H
    #define MY_CLASS_H
    ...
    #endif&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Unfortunately, this isn&amp;#8217;t good enough. The file will still get opened and read in its entirety every time it is included. You could also put the guard directives around the include statement:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;    #ifndef MY_CLASS_H
    #include &amp;quot;myclass.h&amp;quot;
    #endif&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;This is tedious and few people do it, but it does avoid the wasted file I/O.&lt;/p&gt;


	&lt;p&gt;Finally, too few people simply declare a required class with no body:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;    class MyClass;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;This is sufficient when one header references another class as a pointer or reference. In our experience with clients, we have often seen build times improve significantly when teams cleaned up their header file usage and dependencies, in general. Still, why is all this necessary in the 21st century?&lt;/p&gt;


	&lt;p&gt;This problem is made worse by the unfortunate inclusion of private and protected declarations in the same header file included by clients of the class. This creates &lt;em&gt;phantom dependencies&lt;/em&gt; from the clients to class details that they can&amp;#8217;t access directly.&lt;/p&gt;


	&lt;h4&gt;Other Debugging Issues&lt;/h4&gt;


	&lt;p&gt;Limited or non-existent context information when an exception is thrown makes the origin of the exception harder to find. To fill the gap, you tend to spend more time &lt;em&gt;adding&lt;/em&gt; this information manually through logging statements in catch blocks, &lt;em&gt;etc&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;The &lt;tt&gt;std::exception&lt;/tt&gt; class doesn&amp;#8217;t appear to have a &lt;tt&gt;std::string&lt;/tt&gt; or &lt;tt&gt;const char&amp;#42;&lt;/tt&gt; argument in a constructor for a message. You could just throw a string, but that precludes using an exception class with a meaningful name.&lt;/p&gt;


	&lt;p&gt;Compiler error messages are hard to read and often misleading. In part this is due to the complexity of the syntax and the parsing problem mentioned previously. Errors involving template usage are particular hard to debug.&lt;/p&gt;


	&lt;h4&gt;Reflection and Metaprogramming&lt;/h4&gt;


	&lt;p&gt;Many of the productivity gains from using dynamic languages and (to a lesser extent) Java and C# are due to their reflection and metaprogramming facilities. C++ relies more on &lt;em&gt;template metaprogramming&lt;/em&gt;, rather than APIs or other built-in language features that are easier to use and more full-featured. Preprocessor hacks are also used frequently. Better reflection and metaprogramming support would permit more robust &lt;em&gt;proxy&lt;/em&gt; or &lt;em&gt;aspect&lt;/em&gt; solutions to be used. (However, to be fair, sometimes a preprocessor hack has the virtue of being &amp;#8220;the simplest thing that could possibly work.&amp;#8221;)&lt;/p&gt;


	&lt;h4&gt;Library Issues&lt;/h4&gt;


	&lt;p&gt;Speaking of &lt;tt&gt;std::string&lt;/tt&gt; and &lt;tt&gt;char&amp;#42;&lt;/tt&gt;, it is hard to avoid writing two versions of methods, one which takes &lt;tt&gt;const std::string&amp;amp;&lt;/tt&gt; arguments and one which takes &lt;tt&gt;const char&amp;#42;&lt;/tt&gt; arguments. It doesn&amp;#8217;t matter that one method can usually delegate to the other one; this is wasted effort.&lt;/p&gt;


	&lt;h3&gt;Discussion&lt;/h3&gt;


	&lt;p&gt;So, C++ makes it hard for me to work the way that I want to work today, which is test-driven, creating clean code that works. That&amp;#8217;s why I rarely choose it for a project.&lt;/p&gt;


	&lt;p&gt;However, to be fair, there are legitimate reasons for almost all of the perceived &amp;#8220;deficiencies&amp;#8221; listed above. C++ emphasizes performance and backwards-compatibility with C over all other considerations. However, they come at the expense of other interests, like effective &lt;span class="caps"&gt;TDD&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;It &lt;em&gt;is&lt;/em&gt; a &lt;strong&gt;good&lt;/strong&gt; thing that we have languages that were designed with performance as the top design goal, because there are circumstances where performance is the number one requirement. However, most teams that use C++ as their primary language are making an optimal choice for, say, 10% of their code, but which is suboptimal the other 90%. Your numbers will vary; I picked 10% &lt;em&gt;vs.&lt;/em&gt; 90% based on the fact that performance bottlenecks are usually localized and they should be found by actual measurements, not guesses!&lt;/p&gt;


	&lt;h4&gt;Workarounds&lt;/h4&gt;


	&lt;p&gt;If it&amp;#8217;s true that &lt;span class="caps"&gt;TDD&lt;/span&gt; is an order of magnitude slower for C++ then what do we do? No doubt really good C++ developers have optimized their processes as best as they can, but in the end, you will just have to live with longer &lt;span class="caps"&gt;TDD&lt;/span&gt; cycles. Instead of &lt;em&gt;write just enough test to fail, make it pass, refactor&lt;/em&gt;, it will be more like &lt;em&gt;write a complete test, write the implementation, build it, fix the compilation errors, run it, fix the logic errors to make the test pass, and then refactor&lt;/em&gt;.&lt;/p&gt;


	&lt;h4&gt;A Real Resolution?&lt;/h4&gt;


	&lt;p&gt;You could consider switching to the &lt;a href="http://www.digitalmars.com/d/"&gt;D language&lt;/a&gt;, which is link compatible with C and appears to avoid many of the problems described above.&lt;/p&gt;


	&lt;p&gt;There is another way out of the dilemma of needing optimal performance some of the time and optimal productivity the rest of the time; use more than one language. I&amp;#8217;ll discuss this idea in my next blog.&lt;/p&gt;</description>
      <pubDate>Tue, 03 Jul 2007 23:15:09 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:399b620b-c563-4b96-9556-17e24c8f8f74</guid>
      <author>Dean Wampler</author>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long</link>
      <category>Dean's Deprecations</category>
      <category>c</category>
      <category>TDD</category>
      <category>D</category>
      <trackback:ping>http://blog.objectmentor.com/articles/trackback/8785</trackback:ping>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by ?????</title>
      <description>&lt;p&gt;thank you sow mach&lt;/p&gt;</description>
      <pubDate>Wed, 23 Nov 2011 17:43:38 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:3e9a5e47-04df-40e4-93f0-364077ee9f0a</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-177134</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by http://www.supplycheapjersey.com/</title>
      <description>&lt;p&gt;NFL,MLB,NBA,NHL,SOCCER Sunglasses&lt;/p&gt;</description>
      <pubDate>Wed, 09 Nov 2011 03:00:51 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:596cec7c-c34d-4fa7-8467-a13ce2637dbc</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-170432</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by http://www.cheapnfljerseys001.com/</title>
      <description>&lt;p&gt;thank you man.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Nov 2011 02:45:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:bbeccf4e-cb49-4ed0-b301-1474707807f6</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-170426</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by christian louboutin</title>
      <description>&lt;p&gt;Christian Louboutin Rolando Hidden-Platform Pumps Golden is a fashion statement &amp;#8211; that&amp;#8217;s sexy, it makes you look longer highlight, and it highlights the curves in the woman body and makes the body look more elegant and thinner without any diet.&lt;/p&gt;


	&lt;p&gt;?Brand: Christian Louboutin
?Material: Golden leather
?Specialty: Signature red sole
?Color: Golden
?Heel height: Approximately 130mm/ 5.2 inches high and a concealed 20mm/ 1 inch platform
?Condition: Brand New in box with dust bags &amp;#38; Original Box&lt;/p&gt;


	&lt;p&gt;Fashion, delicate, luxurious Christian louboutins shoes on sale, one of its series is Christian Louboutin Rolando Pumps, is urbanism collocation. This Christian louboutins shoes design makes people new and refreshing. Red soles shoes is personality, your charm will be wonderful performance.&lt;/p&gt;</description>
      <pubDate>Fri, 04 Nov 2011 22:27:31 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:afe1158c-b83e-4eb6-bd3f-f58c5a35e8fa</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-168469</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Tips For Bowling</title>
      <description>&lt;p&gt;The cause of justice is the cause of humanity. Its advocates should overflow with universal good will. We should love this cause, for it conduces to the general happiness of mankind.&lt;/p&gt;</description>
      <pubDate>Thu, 20 Oct 2011 15:49:33 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8a15906e-f2ed-40a3-8ad6-fe1fc9fb33b0</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-160283</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by credit calculators</title>
      <description>&lt;p&gt;nice to see this site is very good information.
thanks for sharing.&lt;/p&gt;</description>
      <pubDate>Wed, 19 Oct 2011 07:42:42 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:3bcdc2bc-ee9c-44f6-aa59-ffaffa5293e5</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-159756</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by ysbearing</title>
      <description>&lt;p&gt;Slewing bearing called slewing ring bearings, is a comprehensive load to bear a large bearing, can bear large axial, radial load and overturning moment.&lt;/p&gt;</description>
      <pubDate>Wed, 19 Oct 2011 04:14:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:7ae6cffd-9887-4b08-afe4-642c0de4a622</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-159638</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by canada goose coat</title>
      <description>&lt;p&gt;&lt;a href="http://www.shopcanadagoosejackets.com/canada-goose-expedition-parka-c-2.html" rel="nofollow"&gt;Canada Goose Outlet&lt;/a&gt;
is Marmot 8000M Parka. The Marmot 8000M Parka is really a waterproof, breathable jacket with 800 fill &lt;a href="http://www.shopcanadagoosejackets.com/canada-goose-youth-parka-c-7.html" rel="nofollow"&gt;canada goose jacket&lt;/a&gt; feathers. It truly is design and light colored shell is produced for trendy, but uncomplicated, protection from cold temperatures. Reinforced shoulders, elbows and adjustable waist and hem make the Marmot a perfect alternate for skiing and other outdoor sports that want fairly a bit of arm motion. The 8000M Parka weighs three lbs., comes in bonfire and black colours and might be stuffed and stored like a sleeping bag to your convenience.This is one of well-know and prime down jacket brands.Hope our friends like its!Like &lt;a href="http://www.shopcanadagoosejackets.com/canada-goose-womens-c-8.html" rel="nofollow"&gt;canada goose womens&lt;/a&gt; and &lt;a href="http://www.shopcanadagoosejackets.com/canada-goose-expedition-parka-c-2.html" rel="nofollow"&gt;Canada Goose Expedition Parka&lt;/a&gt;.There are &lt;a href="http://www.shopcanadagoosejackets.com/" rel="nofollow"&gt;wholesale canada goose&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 19 Sep 2011 02:22:31 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:46ab1588-1635-473a-89ee-dabd38d98462</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-142640</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by ????? ?????</title>
      <description>&lt;p&gt;? ?? ?? ? ? ?? ?? ? ??? ?? ?? ?? ? . ?? ?? ???? ?? ? ??? ?&lt;a href="http://www.druzefood.co.il/" rel="nofollow"&gt;??? ???&lt;/a&gt; ??? ???? ?? ?? . ? ?? ?? ?&lt;a href="http://www.druzefood.co.il/" rel="nofollow"&gt;?? ???&lt;/a&gt; ?? ?? ??? ??? .&lt;/p&gt;</description>
      <pubDate>Fri, 08 Jul 2011 17:03:01 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:cc419e4a-0eb6-4d10-96dc-8aac4caf4ff8</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-116314</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by cheap soccer jersey</title>
      <description>&lt;p&gt;you really have avery nice blog,it&amp;#8217;s the first time to be here but it won&amp;#8217;t be the last untill then keep blogging.goodluck!&lt;/p&gt;</description>
      <pubDate>Thu, 09 Jun 2011 01:38:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e121f926-ba1c-4192-9dc3-9bd0d6640cec</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-109323</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by beats by dr dre headphones</title>
      <description>&lt;p&gt;&lt;a href="http://www.drebeatsstudio.com/beats-by-dr-dre-studio-c-3.html" rel="nofollow"&gt;Beats by dr dre studio&lt;/a&gt; with look after talk in white. extra attributes on &lt;a href="http://www.drebeatsstudio.com/monster-beats-by-dr-dre-pro-headphones-black-p-15.html" rel="nofollow"&gt;Monster Beats By Dr. Dre Pro Headphones Black&lt;/a&gt; a specific tri-fold design and design and carrying circumstance which make for compact and uncomplicated safe-keeping when not in use. &lt;a href="http://www.drebeatsstudio.com/beats-by-dr-dre-solo-c-5.html" rel="nofollow"&gt;Beats by dr dre solo&lt;/a&gt; .&lt;/p&gt;</description>
      <pubDate>Wed, 08 Jun 2011 20:53:33 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:14a9411d-6fb3-4db5-a379-0c1eec44d5c7</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-109185</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Jewellery</title>
      <description>&lt;p&gt;Online UK costume and fashion jewellery shop with,
g&lt;/p&gt;</description>
      <pubDate>Mon, 06 Jun 2011 00:47:58 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c2a82d5e-2869-49e3-9e47-dc2e48eda4f2</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-108448</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by christian louboutin shoes on sale</title>
      <description>&lt;p&gt;Have the &lt;a href="http://www.blacklouboutinshoes.com/pumps-c-2.html" rel="nofollow"&gt;christian louboutin patent leather pumps&lt;/a&gt;  is a happy thing. 
Here have the most complete kinds of  &lt;a href="http://www.blacklouboutinshoes.com/platforms-c-3.html" rel="nofollow"&gt;christian louboutin leather platform pumps&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Fri, 03 Jun 2011 08:55:20 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8a41b152-3c4e-46a6-8fcf-b926f4270007</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-107750</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Best Phone Lookup</title>
      <description>&lt;p&gt;I visited this page first time and found it Very Good Job of acknowledgment and a marvelous source of info&amp;#8230;......Thanks Admin!&lt;/p&gt;</description>
      <pubDate>Thu, 02 Jun 2011 23:18:37 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:dd1efe19-c0c2-4374-bfe5-97aa36f018c0</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-107429</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Best Phone Lookup</title>
      <description>&lt;p&gt;I visited this page first time and found it Very Good Job of acknowledgment and a marvelous source of info&amp;#8230;......Thanks Admin!&lt;/p&gt;</description>
      <pubDate>Thu, 02 Jun 2011 23:16:49 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:27e33dc8-6319-4daf-a8d5-9ad8ee5d97d2</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-107427</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by okey oyunu oyna </title>
      <description>&lt;p&gt;i can not say anything good article&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Ger&#231;ek ki?ilerle sohbet ederek  &lt;a href="http://www.okeyoyunu-oyna.com" rel="nofollow"&gt;okey oyunu oyna&lt;/a&gt; ve internette online oyun oynaman?n zevkini &#231;?kar.&lt;/p&gt;</description>
      <pubDate>Mon, 25 Apr 2011 16:32:14 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a877f6c5-0044-401b-a3f1-7c2030080bb9</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-90576</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by damper</title>
      <description>&lt;p&gt;Our company is engaged in the professional manufacturer of &lt;a href="http://www.nbjqyy.com" rel="nofollow"&gt;damper&lt;/a&gt;, air cylinder, oil cylinder, and hydraulic station. The company has many year&amp;#8217;s production experience and strong technical power.&lt;/p&gt;</description>
      <pubDate>Fri, 22 Apr 2011 02:44:55 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:edc27029-d04f-46e1-a9e2-79eda687a5eb</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-89470</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Diamond Reviews</title>
      <description>&lt;p&gt;Tremendous work. I am getting benefit from your post. So i have to share thank you. You can go long way by your skill.&lt;/p&gt;</description>
      <pubDate>Fri, 08 Apr 2011 06:55:15 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6ee0ea36-f101-40e9-8211-dc6b7b5d4d96</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-81674</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by jaychouchou</title>
      <description>&lt;p&gt;To be, or not to be- that is a question.Whether &lt;a href="http://www.voien.com/" rel="nofollow"&gt;ipad bag&lt;/a&gt; tis nobler in the mind to suffer The slings and &lt;a href="http://www.fjblcy.com/" rel="nofollow"&gt;Game Controllers&lt;/a&gt; arrows of outrageous fortune Or to take arms against a sea of troubles, And &lt;a href="http://www.dewkett.com/" rel="nofollow"&gt;USB Gadgets&lt;/a&gt; by opposing end them.&lt;/p&gt;</description>
      <pubDate>Sat, 19 Mar 2011 02:30:56 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4e8ad1e8-6db3-452c-a282-0ae5f233e333</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-73840</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by SEO Firm India</title>
      <description>&lt;p&gt;hey man,i am a first time visitor here and like your blog.&lt;/p&gt;</description>
      <pubDate>Fri, 18 Mar 2011 12:54:07 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:91f03c6e-67b9-49c8-b9cc-29af10d52506</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-73615</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Sunglass  </title>
      <description>&lt;p&gt;Women Replica Sunglass at cheap discount price  Inspired ,MEN designer Sunglasses&lt;/p&gt;</description>
      <pubDate>Thu, 10 Mar 2011 05:01:33 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e61f07cd-7ea0-4fb7-bbbc-8753a4edbe5e</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-71593</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by dswehfhh</title>
      <description>&lt;p&gt;We are the professional &lt;a href="http://www.china-clothing-manufacturer.com/jackets.html" rel="nofollow"&gt;jacket manufacturer&lt;/a&gt;, &lt;a href="http://www.china-clothing-manufacturer.com/jackets.html" rel="nofollow"&gt;jacket supplier&lt;/a&gt;, &lt;a href="http://www.china-clothing-manufacturer.com/jackets.html" rel="nofollow"&gt;jacket factory&lt;/a&gt;, welcome you to &lt;a href="http://www.china-clothing-manufacturer.com/jackets.html" rel="nofollow"&gt;custom jacket&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Wed, 09 Mar 2011 14:11:35 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:28f315bf-ec07-47b9-ab55-c0859f104d0b</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-71135</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Criminal Records</title>
      <description>&lt;p&gt;Better reflection and metaprogramming support would permit more robust proxy or aspect solutions to be used.&lt;/p&gt;</description>
      <pubDate>Mon, 14 Feb 2011 16:16:42 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:da52740c-7838-436e-9677-d973b49e6879</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-62756</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by hublot replicas</title>
      <description>&lt;p&gt;to a busy signal.&amp;#8221;While breitling bentley swiss replica signal.&amp;#8221;While I was thinking yesterday that I &lt;a href="http://www.cartier-rings.org/wholesale/mens-rings-53-b0.html" rel="nofollow"&gt;Mens Rings&lt;/a&gt; I would reschedule, now I am just &lt;a href="http://www.tagwatch.org/categories/rolex-yachtmaster-39-b0.html" rel="nofollow"&gt;rolex yacht master replica&lt;/a&gt; just thinking: Give&lt;/p&gt;</description>
      <pubDate>Fri, 07 Jan 2011 04:02:12 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f3265a51-af53-4cec-9930-9b0bbcd8d101</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-55053</link>
    </item>
    <item>
      <title>"Observations on TDD in C++ (long)" by Silicone Molding</title>
      <description>&lt;p&gt;Intertech Machinery Inc. provides the most precise &lt;a href="http://www.taiwanmoldmaker.com/service-plastic-injection-mold.html" rel="nofollow"&gt;Plastic Injection Mold&lt;/a&gt; and
&lt;a href="http://www.taiwanmoldmaker.com/service-rubber-molds.html" rel="nofollow"&gt;Rubber Molds&lt;/a&gt; from Taiwan.  With applying excellent unscrewing device in molds,  
Intertech is also very professional for making flip top &lt;a href="http://www.taiwanmoldmaker.com/service-cap-mold.html" rel="nofollow"&gt;Cap Molds&lt;/a&gt; in the world.&lt;/p&gt;</description>
      <pubDate>Sun, 26 Dec 2010 21:02:03 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f9db0cca-b400-4c44-9b4d-186fac65a051</guid>
      <link>http://blog.objectmentor.com/articles/2007/07/03/observations-on-tdd-in-c-long#comment-52066</link>
    </item>
  </channel>
</rss>

