<?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: Hello World Revisited</title>
    <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Hello World Revisited</title>
      <description>&lt;p&gt;Surprising revelations while taking a &lt;span class="caps"&gt;TDD&lt;/span&gt; approach to writing hello world.&lt;/p&gt;


	&lt;p&gt;Here it nearly 21 years since I started writing in C++ (and more for C+) and I realize I&amp;#8217;ve been blindly writing main functions to actually do something.&lt;/p&gt;


	&lt;p&gt;This insanity must stop!&lt;/p&gt;


	&lt;p&gt;What am I talking about? &lt;a href="http://schuchert.wikispaces.com/Tdd.HelloWorld.Cpp"&gt;Read it here.&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 20 May 2010 10:12:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d09424a6-eb8f-4d9a-8025-35839675f928</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>TDD</category>
      <category>seam</category>
      <category>link</category>
    </item>
    <item>
      <title>"Hello World Revisited" by supplynflshop</title>
      <description>&lt;p&gt;Originally, the word emblem meant &#8220;inlaid ornamental work,&#8221; that is &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;Wholesale NFL Jerseys&lt;/a&gt;, a&lt;/p&gt;


	&lt;p&gt;symbol of something else &#8211; in this case, that of wealth, because of the time and skill required to do it . Badge probably became&lt;/p&gt;


	&lt;p&gt;synonymous with emblem in the 15th century &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;Cheap NFL Jerseys&lt;/a&gt;. Decal, an abbreviated version of&lt;/p&gt;


	&lt;p&gt;&#8220;decalcomania,&#8221;a French word that came into use in the early 20th century referred to the English practice of &#8220;transfer printing&#8221;&lt;/p&gt;


	&lt;p&gt;invented in the 18th century. This process transferred the ink from a design or drawing to the glass or porcelain when it was fired in the&lt;/p&gt;


	&lt;p&gt;kiln &lt;a href="http://www.supplynflshop.com" rel="nofollow"&gt;NFL Jerseys&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 31 Aug 2010 22:04:41 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:94e8173b-f0c6-4c85-a336-b8509b2ef5e5</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-23454</link>
    </item>
    <item>
      <title>"Hello World Revisited" by cosplay</title>
      <description>&lt;p&gt;I prefer the old hello world because it&#8217;s simply and fast :)&lt;/p&gt;</description>
      <pubDate>Tue, 10 Aug 2010 04:21:44 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:547e5700-bb0c-4acd-be2e-f3ec5e28d4be</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-19375</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Dicios</title>
      <description>&lt;p&gt;I prefer the old hello world because it&amp;#8217;s simply and fast :)&lt;/p&gt;</description>
      <pubDate>Sat, 24 Jul 2010 05:13:23 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:be84190a-0b3e-4d72-a704-0434dde44906</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-17273</link>
    </item>
    <item>
      <title>"Hello World Revisited" by shift</title>
      <description>&lt;p&gt;Bull-puncher knickers is always at leisure wear the limelight, cowboy comfortable and cool and refreshing knickers shading effect, it is become big period of change garments according to the spring love and melody. Loose &lt;a href="http://www.lydress.com/q99866-whitefashion-ladys-dress-p-780.html" rel="nofollow"&gt; t-shirts &lt;/a&gt;, vests even &lt;a href="http://www.lydress.com/q99865-pinkfashion-ladys-dress-p-777.html" rel="nofollow"&gt; swimsuit &lt;/a&gt;  can matching, become do not fall convention of change garments according to the collocation of the election.&lt;/p&gt;</description>
      <pubDate>Mon, 19 Jul 2010 05:24:17 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:48890078-ba05-404b-9dbc-a0cb7a881be6</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16819</link>
    </item>
    <item>
      <title>"Hello World Revisited" by shift</title>
      <description>&lt;p&gt;Bull-puncher knickers is always at leisure wear the limelight, cowboy comfortable and cool and refreshing knickers shading effect, it is become big period of change garments according to the spring love and melody. Loose &lt;a href="http://www.lydress.com/q99866-whitefashion-ladys-dress-p-780.html" rel="nofollow"&gt; t-shirts &lt;/a&gt;, vests even &lt;a href="http://www.lydress.com/q99865-pinkfashion-ladys-dress-p-777.html" rel="nofollow"&gt; swimsuit &lt;/a&gt;  can matching, become do not fall convention of change garments according to the collocation of the election.&lt;/p&gt;</description>
      <pubDate>Mon, 19 Jul 2010 05:23:57 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b8d5e9f8-02ab-4292-928d-61b36b64ee42</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16818</link>
    </item>
    <item>
      <title>"Hello World Revisited" by jingjia</title>
      <description>&lt;p&gt;&lt;a href="http://www.iphoneringtonecustom.com" rel="nofollow"&gt;iPhone Ringtone Custom&lt;/a&gt; turns your dream of making your own iPhone/iPhone 3G Ringtone with loved music into reality in the way of converting almost all mainstream video/audio format to M4R iPhone ringtone, such as avi, mpeg, mp4, mov, flv, mp3, aac, m4a, wma, etc. to M4R iPhone Ringtone, even rip DVD Disc to Ringtones for iPhone.
&lt;a href="http://www.iphoneringtonecustom.com/convert-to-iphone-ringtone.html" rel="nofollow"&gt;Convert to iPhone Ringtone &lt;/a&gt;
&lt;a href="http://www.iphoneringtonecustom.com/change-iphone-ringtone.html" rel="nofollow"&gt;Change iPhone Ringtone &lt;/a&gt;
&lt;a href="http://www.iphoneringtonecustom.com/convert-music-to-iphone-ringtone.html" rel="nofollow"&gt;Convert Music to iPhone Ringtone&lt;/a&gt;
&lt;a href="http://www.iphoneringtonecustom.com/convert-mp3-to-iphone-ringtone.html" rel="nofollow"&gt;Convert MP3 iPhone Ringtone&lt;/a&gt;
&lt;a href="http://www.iphoneringtonecustom.com/convert-m4a-to-m4r.html" rel="nofollow"&gt;Convert M4A to M4R &lt;/a&gt;    
&lt;a href="http://www.iphoneringtonecustom.com/convert-mp4-to-iphone-ringtone.html" rel="nofollow"&gt;Convert MP4 to iPhone Ringtone&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 19 Jul 2010 01:49:49 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:34ccebbc-ab94-4b26-9ca8-f8f0d3d7616d</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16712</link>
    </item>
    <item>
      <title>"Hello World Revisited" by double-breasted suit </title>
      <description>&lt;p&gt;sss female&lt;a href="www.lydress.com" rel="nofollow"&gt;costume  &lt;/a&gt;   several popular this year, for your dress reference!&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jul 2010 21:18:23 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8ef14249-3f4a-4f63-a62b-d6e50818fbf3</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16193</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Chance</title>
      <description>&lt;p&gt;This is a very helpful article.  I was writing a new program from scratch (which I actually don&amp;#8217;t do that often, I mostly maintain) and remembered this article.  I did something slightly different in that I had (in C++)&lt;/p&gt;


	&lt;p&gt;int main( int argc, char* argv[] )
{
     return object-&amp;gt;callFunction( argc, argv );&lt;/p&gt;


	&lt;p&gt;}&lt;/p&gt;


	&lt;p&gt;Not only did this make my entire program testable, but it really helped with the design of the program as well.  Instead of writing a function that could only be used one time, I wrote a class that I could reuse for other programs if needed.&lt;/p&gt;</description>
      <pubDate>Tue, 13 Jul 2010 16:59:36 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6fef19ea-2cda-47b6-a7bb-807c54dcf8be</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16183</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Granite Tile</title>
      <description>&lt;p&gt;i am really glad to leave my comment here in very decent topic, thank you!&lt;/p&gt;</description>
      <pubDate>Mon, 12 Jul 2010 22:15:05 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:bda3e222-dc73-46cd-9465-0e4599394ba2</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-16049</link>
    </item>
    <item>
      <title>"Hello World Revisited" by http://www.laviesolar.com</title>
      <description>&lt;p&gt;Hey all. A am glad to find this site. Very usefull.&lt;/p&gt;</description>
      <pubDate>Tue, 06 Jul 2010 03:22:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9a6796df-21b4-4162-abba-4cc4aa91374c</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-15409</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Azohba</title>
      <description>&lt;p&gt;Helal olsun valla ne guzel yazm?? yaaa tebrikler&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.10sinifcografyakitabitumcevaplari.com/" rel="nofollow"&gt;10.s?n?f co?rafya kitab? cevaplar?&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.10sinifcografyakitabitumcevaplari.com/" rel="nofollow"&gt;10.s?n?f co?rafya kitab? cevaplar?&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 02 Jun 2010 12:19:25 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ba67ab86-800e-4a4e-a743-b2212b058edd</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-12404</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Brett Schuchert</title>
      <description>&lt;p&gt;Stan,&lt;/p&gt;


	&lt;p&gt;?? can you be a bit more specific? On what have I changed my mind?&lt;/p&gt;


	&lt;p&gt;As for \n versus std::endl, I agree. I should be consistent. I originally tried to do that, but since endl is an inserter, it&amp;#8217;s not obvious how to extract its result into a value I can use. (Yes, build another stringstream, write to it to build an expected result, extract the result as a string, etc.) By the point I got to that, I had observed something much different than expected upon starting this little exercise. So I went for the shiny thing rather than that.&lt;/p&gt;


	&lt;p&gt;As for returning 0 or not, right now, given the tests, returning 0 is OK I suppose. If it&amp;#8217;s not, then add a test that would force a need for a different return and then update the method. So I don&amp;#8217;t see a problem there at all.&lt;/p&gt;


	&lt;p&gt;Two tests in one unit test? I don&amp;#8217;t follow your question. Your response is 10 days after the post. I don&amp;#8217;t keep context for that long. So I cannot guess your point. I see one assertion per unit test, so how do I have two tests in one unit test? I have one test fixture, two unit tests, each with a single assert. So what do you see that I do not see?&lt;/p&gt;</description>
      <pubDate>Mon, 31 May 2010 11:11:02 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:af9ea085-7774-406a-89e1-04eeb5355d1f</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-12310</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Stan</title>
      <description>&lt;p&gt;Questions, questions, questions 
Hmm a little while ago when you posted the bowling kata (&lt;a href="http://blog.objectmentor.com/articles/2009/10/27/c-bowling-kata-result" rel="nofollow"&gt;http://blog.objectmentor.com/articles/2009/10/27/c-bowling-kata-result&lt;/a&gt; )I commented:
&amp;#8220;I have not used this framework yet many other C++ frameworks and they all return a result of the tests do you not want this information returned from main?&amp;#8221;&lt;/p&gt;


	&lt;p&gt;To which you replied:&lt;/p&gt;


	&lt;p&gt;&amp;#8220;When I run the tests they either pass or fail. If they pass, I don&#8217;t need more information. If they fail, then I first need to know which tests failed. I would know that from execution and I would start there. So what are you looking for?&amp;#8221;&lt;/p&gt;


	&lt;p&gt;Can I ask what changed your mind?&lt;/p&gt;


	&lt;p&gt;&amp;#8220;Even so, I&amp;#8217;m bothered by checking for &amp;#8221;\n&amp;#8221; in one place and using std::endl in another. For now, I&amp;#8217;ll leave that as an exercise to the reader to decide if that&amp;#8217;s really a problem or not.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;&amp;#8221;\n&amp;#8221; and std::endl preform mostly the same magic of transforming the new line char into a platform specific end line, with std::endl having the added functionality of flushing the buffer. There is no problem using std::endl and checking for &amp;#8221;\n&amp;#8221; here.&lt;/p&gt;


	&lt;p&gt;Why are you returning 0 from the mainImpl and when will it ever not return 0, why not instead return the status of the buffer? 
Why do you have two tests in one unit test? Checking the return which is never none zero and the buffer contents.&lt;/p&gt;</description>
      <pubDate>Sun, 30 May 2010 12:25:14 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:970d35b2-e218-4fbd-ad09-b1d1da5fae7a</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-12277</link>
    </item>
    <item>
      <title>"Hello World Revisited" by m2ts to mkv converter</title>
      <description>&lt;p&gt;yes ,it&amp;#8217;s ok,
&lt;a href="http://www.m2tstomkvconverter.com" rel="nofollow"&gt;m2ts to mkv converter&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 26 May 2010 20:49:57 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ec0788a3-05e2-43c8-a7d1-290b6f26bb2f</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-12138</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Brett L. Schuchert</title>
      <description>Markus,

	&lt;p&gt;I assure you, all of my tests failed the first time. I did not show those steps, for sure. However, to play devils advocate, since I knew the implementation and was just vetting it via tdd, I&amp;#8217;m OK with tests passing in those situations.&lt;/p&gt;


	&lt;p&gt;What happens if I&amp;#8217;m using a published algorithm? If I can follow it and the pseudo code doesn&amp;#8217;t make too many assumptions, then I can write fewer tests. If, on the other hand, it&amp;#8217;s hard to follow or leaves a lot to the reader (I&amp;#8217;m thinking the shunting yard algorithm), then raw tdd makes more sense to me.&lt;/p&gt;</description>
      <pubDate>Fri, 21 May 2010 10:10:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:d6e75911-a49e-453f-9bfb-4558c45fc612</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-11844</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Jason Y</title>
      <description>&lt;p&gt;I guess all that to say, &amp;#8220;Hello world&amp;#8221; apps in new languages for, e.g., 3rd- and 4th-year college students should be functions driven by interactive consoles, unit testing frameworks, or other drivers; they should include no main function.&lt;/p&gt;</description>
      <pubDate>Fri, 21 May 2010 00:27:12 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4c9f9866-3000-4c33-875e-90d56937eabd</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-11804</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Jason Y</title>
      <description>&lt;p&gt;This reminded me of my college days, when every program I submitted was required to have a main function.  I have &lt;em&gt;never&lt;/em&gt; written a main function for work in the 2.5 years I have been a professional developer.  What I have learned on my own since then how to use existing drivers such as NUnit and ASP .NET.  These always drive my code.&lt;/p&gt;


	&lt;p&gt;That said, I think it&amp;#8217;s time college courses focus on using other drivers for apps.  Whole courses should be completed without the use of a main function.  main should be taught as &amp;#8220;This is how these drivers work under-the-hood, and here&amp;#8217;s how you can write it&amp;#8221; instead of &amp;#8220;This is the first thing you write with every application.&amp;#8221;&lt;/p&gt;</description>
      <pubDate>Fri, 21 May 2010 00:25:39 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:14c74ae8-b6f1-45f0-93f6-43e54a2adbc0</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-11803</link>
    </item>
    <item>
      <title>"Hello World Revisited" by Markus Gaertner</title>
      <description>&lt;p&gt;Awwww, there&amp;#8217;s no failing unit test in your first &amp;#8220;Hello World&amp;#8221; step! :)&lt;/p&gt;</description>
      <pubDate>Thu, 20 May 2010 15:16:35 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f7fbab72-8e73-47a6-9a41-bdc63cf09197</guid>
      <link>http://blog.objectmentor.com/articles/2010/05/20/hello-world-revisited#comment-11793</link>
    </item>
  </channel>
</rss>
