<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Adventures of an aspiring agile developer in a not-quite agile world : VS</title><link>http://blogs.msdn.com/agilemonkey/archive/tags/VS/default.aspx</link><description>Tags: VS</description><dc:language>en-CA</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Treading on thin ice</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/06/02/treading-on-thin-ice-can-be-fun.aspx</link><pubDate>Sat, 02 Jun 2007 11:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3038393</guid><dc:creator>casper</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/3038393.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=3038393</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=3038393</wfw:comment><description>&lt;P&gt;I wasn't sure if I should comment on this, but the power of Agile and good programming compel me. I love &lt;A href="http://www.testdriven.net/" mce_href="http://www.testdriven.net/"&gt;TestDrive.Net&lt;/A&gt;. I've shown it to my group on more than one occasion and will tell anyone who will listen about it. Yes, the next version of Visual Studio is greatly improving the test-first experience, but in the meantime this is without a doubt one of the best tools you can buy for coding.&lt;/P&gt;
&lt;P&gt;I can't argue that &lt;A href="http://weblogs.asp.net/nunitaddin/archive/2007/05/30/microsoft-vs-testdriven-net-express.aspx" mce_href="http://weblogs.asp.net/nunitaddin/archive/2007/05/30/microsoft-vs-testdriven-net-express.aspx"&gt;Jamie is in the right&lt;/A&gt; - he's definitely not. The EULA for VS Express clearly states that you cannot write extensions for the free version of the application. At the same time, I believe test-first development is crucial to learning to be a good programmer, and depriving hobbyists of this wonderful extension is cruel at best. I don't know what the solution is, and I'm definitely not a lawyer, but I really hope everyone can come to an amicable end to this situation.&lt;BR&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3038393" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/EDD_2F00_TDD/default.aspx">EDD/TDD</category><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/VS/default.aspx">VS</category></item><item><title>Unit testing moving to VS Pro!</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/03/28/unit-testing-moving-to-vs-pro.aspx</link><pubDate>Wed, 28 Mar 2007 10:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1973210</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/1973210.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=1973210</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=1973210</wfw:comment><description>Due to popular demand, the unit testing features normally found only in Visual Studio Team System are going to be available in the Pro SKU of Orcas. You can find more details on the announcement &lt;a href="http://blogs.msdn.com/nnaderi/archive/2007/03/27/unit-testing-trickling-into-pro.aspx" mce_href="http://blogs.msdn.com/nnaderi/archive/2007/03/27/unit-testing-trickling-into-pro.aspx"&gt;here&lt;/a&gt;. It's great to see the VS team continue to take an interest in the TDD-oriented crowd.&lt;br&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1973210" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/VS/default.aspx">VS</category></item><item><title>The occasional difficulty with being a proper developer</title><link>http://blogs.msdn.com/agilemonkey/archive/2007/02/06/the-occasional-difficulty-with-being-a-proper-developer.aspx</link><pubDate>Tue, 06 Feb 2007 14:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1611126</guid><dc:creator>casper</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/agilemonkey/comments/1611126.aspx</comments><wfw:commentRss>http://blogs.msdn.com/agilemonkey/commentrss.aspx?PostID=1611126</wfw:commentRss><wfw:comment>http://blogs.msdn.com/agilemonkey/rsscomments.aspx?PostID=1611126</wfw:comment><description>&lt;P&gt;As children, we're often taught the "proper" way to do a task. Usually the advice is promptly ignored and&amp;nbsp;replaced by a quicker or easier method. At some later point in life, we realise why it's better to use the originally prescribed route and then&amp;nbsp;make the extra effort to do it "properly".&lt;/P&gt;
&lt;P&gt;Coding is no different: a classic example in C++ would be the use of &lt;CODE&gt;const&lt;/CODE&gt;. I think most programmers are taught, whether in school or the real world, the value of &lt;CODE&gt;const&lt;/CODE&gt; and how to use it effectively. Inevitably they'll forget to use it at the start of a project ("oh it's too small to worry about that")&amp;nbsp;and then realise half-way through that it's required. This is quickly followed by the wailing and gnashing of teeth as the code is retro-fitted and several cans of [insert your favourite liquid here] are consumed. I can say from experience that introducing &lt;CODE&gt;const&lt;/CODE&gt; into even a small application can take a day or two.&lt;/P&gt;
&lt;P&gt;What does all this have to do with my current project? Well let me take a few seemingly separate practices that I consider "proper":&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Designing code through examples (a.k.a. TDD) 
&lt;LI&gt;Documenting method signatures with XML tags (e.g. /// &amp;lt;summary&amp;gt;) 
&lt;LI&gt;Enabling 'treat warnings as errors'&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;I'm at the stage where phase one of the control is complete and it's wrapped up nicely in its own assembly with the unit tests. Great. I flip on the "Output XML documentation file" in the project properties to see if I've missed any public methods or properties. After the next build VS 2005 promptly gives me 2&lt;SUP&gt;&lt;SMALL&gt;24&lt;/SMALL&gt;&lt;/SUP&gt;-1 warnings/errors (ballpark figure).&lt;/P&gt;
&lt;P&gt;I've really only missed three properties, but now it's complaining about all my unit tests and fixtures. &lt;A href="http://www.testdriven.net/" mce_href="http://www.testdriven.net/"&gt;TDD.Net&lt;/A&gt; won't work unless the classes and methods are marked as &lt;CODE&gt;public&lt;/CODE&gt; so there's no hope of making them all &lt;CODE&gt;internal&lt;/CODE&gt;. I have no intention of writing comments for my unit tests; that's why I use &lt;A href="http://blogs.msdn.com/agilemonkey/archive/2006/11/01/let-s-forget-about-unit-tests.aspx" mce_href="http://blogs.msdn.com/agilemonkey/archive/2006/11/01/let-s-forget-about-unit-tests.aspx"&gt;extremely descriptive method names&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/Theoccasionaldifficultywithbeingaproperd_BCFA/caveoftime%5B5%5D.jpg" atomicselection="true" mce_href="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/Theoccasionaldifficultywithbeingaproperd_BCFA/caveoftime%5B5%5D.jpg"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WIDTH: 144px; HEIGHT: 240px; BORDER-RIGHT-WIDTH: 0px" height=240 hspace=5 src="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/Theoccasionaldifficultywithbeingaproperd_BCFA/caveoftime_thumb%5B3%5D.jpg" width=144 align=right mce_src="http://blogs.msdn.com/blogfiles/agilemonkey/WindowsLiveWriter/Theoccasionaldifficultywithbeingaproperd_BCFA/caveoftime_thumb%5B3%5D.jpg"&gt;&lt;/A&gt; Where does this leave me? I have two choices:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Wrap all the fixtures in &lt;CODE&gt;#pragma warning disable 1591&lt;/CODE&gt; 
&lt;LI&gt;Move all unit tests to a separate assembly&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;I grudgingly chose #2. My first options was [3. Exclude unit tests from non-debug builds, and only enable XML generation in those builds].&amp;nbsp;As I found out, you &lt;EM&gt;can't do that&lt;/EM&gt; in VS 2005; it must have been a little-used features of VC6&amp;lt;/sarcasm&amp;gt;. Option one makes the source file looks messy, and I have a touch of OCD when it comes to neatness. I blame &lt;A href="http://agileprogrammer.com/scottden/" mce_href="http://agileprogrammer.com/scottden/"&gt;Scott&lt;/A&gt; for introducing me to the 'View White Space' option in VS.&lt;/P&gt;
&lt;P&gt;Moving the fixtures to a new assembly wasn't that tough; what I ran into was the problem that now my unit tests can't access the internal classes in the original assembly. So another fork in the road appears before me:&lt;/P&gt;
&lt;OL style="LIST-STYLE-TYPE: lower-alpha"&gt;
&lt;LI&gt;Move all&amp;nbsp; unit tests to a separate assembly. Make all classes in original assembly public. 
&lt;LI&gt;Move all unit tests to a separate assembly. Add an [InternalsVisibleTo()] attribute to the original assembly.&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Choosing 2a results in immediate death, just like the classic &lt;EM&gt;Choose Your Own Adventure&lt;/EM&gt; books, so I move along 2b and &amp;nbsp;eventually reach the proper ending.&lt;/P&gt;
&lt;P&gt;I'm going to go out on a limb and say that the developers on the VS team who coded these features didn't do test-first development. If they had, I'm pretty sure doing things like this would be less painful. But there is hope—I know for a fact that they're putting a lot of effort into making TDD work as expected into Orcas and future versions. In the meantime, being a ‘proper’ developer will still require a little extra effort. But, as always, it's worth it.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1611126" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/agilemonkey/archive/tags/VS/default.aspx">VS</category></item></channel></rss>