<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="/rss.xsl"?><rss version="2.0"><channel><title>LiveGeometry Wiki &amp; Documentation Rss Feed</title><link>http://www.codeplex.com/LiveGeometry/Wiki/View.aspx?title=Home</link><description>LiveGeometry Wiki Rss Description</description><item><title>Updated Wiki: Home</title><link>http://livegeometry.codeplex.com/wikipage?version=36</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;NEW: Tabula&lt;/h2&gt;Professional geometry learning software built using the Live Geometry engine:&lt;br /&gt;&lt;a href="http://numeracyworks.com" class="externalLink"&gt;http://numeracyworks.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/kirillosenkov/archive/2011/05/02/tabula.aspx" class="externalLink"&gt;http://blogs.msdn.com/b/kirillosenkov/archive/2011/05/02/tabula.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Project Description&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Live Geometry lets you create interactive ruler and compass constructions and experiment with them. It is CAD-like educational software for teachers and students. It helps visualize and solve geometry problems.&lt;/li&gt;
&lt;li&gt;The project is written with Silverlight 4 and C# 4.0 (Visual Studio 2010). Visual Studio 2008 is no longer supported.&lt;/li&gt;
&lt;li&gt;The core engine is a flexible and extensible framework that allows you to easily add new figure types and features. The project has two front-ends: WPF and Silverlight; they both share the common DynamicGeometry library.&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Live Preview&lt;/h2&gt;Try the Drawing -&amp;gt; Samples button:&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="height:700px;width:900px;"&gt;&lt;param name="source" value="http://guilabs.de/geometry/LiveGeometry.xap"&gt;&lt;/param&gt;&lt;param name="windowless" value="true"&gt;&lt;/param&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0"&gt;&lt;/param&gt;&lt;param name="autoUpgrade" value="true"&gt;&lt;/param&gt;&lt;p&gt;You need to install Microsoft Silverlight to view this content. &lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50401.0" style="text-decoration:none;"&gt;Get Silverlight!&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkID=108181" alt="Get Microsoft Silverlight" style="border-style:none;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/object&gt;&lt;iframe style="visibility:hidden;height:0;width:0;border-width:0;"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;h2&gt;Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Play with it online: &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My blog: &lt;a href="http://blogs.msdn.com/kirillosenkov" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5 min. Get Started video: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Overview article: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introductory Coding4Fun article: &lt;a href="http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx" class="externalLink"&gt;http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Releases and Downloads&lt;/h2&gt;To make sure only the up-to-date source code is available, I&amp;#39;m not publishing releases on the downloads tab. You can always download the latest source on the Source Code tab, just pick the recent changeset number and click Download to download the latest source.&lt;br /&gt;You can view and use the application live at &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;
&lt;h2&gt;&lt;a href="http://livegeometry.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=72149" alt="screenshot.png" title="screenshot.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://geometry.osenkov.com/screenshot.png" /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Sat, 07 May 2011 22:42:25 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110507104225P</guid></item><item><title>Updated Wiki: Home</title><link>http://livegeometry.codeplex.com/wikipage?version=35</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;NEW: Tabula&lt;/h2&gt;Professional geometry learning software built using the Live Geometry engine:&lt;br /&gt;&lt;a href="http://numeracyworks.com" class="externalLink"&gt;http://numeracyworks.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Project Description&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Live Geometry lets you create interactive ruler and compass constructions and experiment with them. It is CAD-like educational software for teachers and students. It helps visualize and solve geometry problems.&lt;/li&gt;
&lt;li&gt;The project is written with Silverlight 4 and C# 4.0 (Visual Studio 2010). Visual Studio 2008 is no longer supported.&lt;/li&gt;
&lt;li&gt;The core engine is a flexible and extensible framework that allows you to easily add new figure types and features. The project has two front-ends: WPF and Silverlight; they both share the common DynamicGeometry library.&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Live Preview&lt;/h2&gt;Try the Drawing -&amp;gt; Samples button:&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="height:700px;width:900px;"&gt;&lt;param name="source" value="http://guilabs.de/geometry/LiveGeometry.xap"&gt;&lt;/param&gt;&lt;param name="windowless" value="true"&gt;&lt;/param&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0"&gt;&lt;/param&gt;&lt;param name="autoUpgrade" value="true"&gt;&lt;/param&gt;&lt;p&gt;You need to install Microsoft Silverlight to view this content. &lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50401.0" style="text-decoration:none;"&gt;Get Silverlight!&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkID=108181" alt="Get Microsoft Silverlight" style="border-style:none;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/object&gt;&lt;iframe style="visibility:hidden;height:0;width:0;border-width:0;"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;h2&gt;Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Play with it online: &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My blog: &lt;a href="http://blogs.msdn.com/kirillosenkov" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5 min. Get Started video: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Overview article: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introductory Coding4Fun article: &lt;a href="http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx" class="externalLink"&gt;http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Releases and Downloads&lt;/h2&gt;To make sure only the up-to-date source code is available, I&amp;#39;m not publishing releases on the downloads tab. You can always download the latest source on the Source Code tab, just pick the recent changeset number and click Download to download the latest source.&lt;br /&gt;You can view and use the application live at &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;
&lt;h2&gt;&lt;a href="http://livegeometry.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=72149" alt="screenshot.png" title="screenshot.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://geometry.osenkov.com/screenshot.png" /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Sat, 07 May 2011 22:41:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20110507104147P</guid></item><item><title>New Comment on "Documentation"</title><link>http://livegeometry.codeplex.com/documentation?&amp;ANCHOR#C18802</link><description>Is there a full detailed document for this project&amp;#63;Really need it</description><author>meenacs</author><pubDate>Mon, 07 Mar 2011 07:12:24 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20110307071224A</guid></item><item><title>Updated Wiki: Home</title><link>http://livegeometry.codeplex.com/wikipage?version=34</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;Project Description&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Live Geometry lets you create interactive ruler and compass constructions and experiment with them. It is CAD-like educational software for teachers and students. It helps visualize and solve geometry problems.&lt;/li&gt;
&lt;li&gt;The project is written with Silverlight 4 and C# 4.0 (Visual Studio 2010). Visual Studio 2008 is no longer supported.&lt;/li&gt;
&lt;li&gt;The core engine is a flexible and extensible framework that allows you to easily add new figure types and features. The project has two front-ends: WPF and Silverlight; they both share the common DynamicGeometry library.&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Live Preview&lt;/h2&gt;Try the Drawing -&amp;gt; Samples button:&lt;br /&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" style="height:700px;width:900px;"&gt;&lt;param name="source" value="http://guilabs.de/geometry/LiveGeometry.xap"&gt;&lt;/param&gt;&lt;param name="windowless" value="true"&gt;&lt;/param&gt;&lt;param name="minRuntimeVersion" value="4.0.50401.0"&gt;&lt;/param&gt;&lt;param name="autoUpgrade" value="true"&gt;&lt;/param&gt;&lt;p&gt;You need to install Microsoft Silverlight to view this content. &lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=4.0.50401.0" style="text-decoration:none;"&gt;Get Silverlight!&lt;br /&gt;&lt;img src="http://go.microsoft.com/fwlink/?LinkID=108181" alt="Get Microsoft Silverlight" style="border-style:none;" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;/object&gt;&lt;iframe style="visibility:hidden;height:0;width:0;border-width:0;"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;h2&gt;Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Play with it online: &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My blog: &lt;a href="http://blogs.msdn.com/kirillosenkov" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;5 min. Get Started video: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/08/08/5-min-screencast-live-geometry-overview.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Overview article: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2008/06/18/live-geometry-with-silverlight-2.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Introductory Coding4Fun article: &lt;a href="http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx" class="externalLink"&gt;http://blogs.msdn.com/coding4fun/archive/2010/03/01/9971021.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Releases and Downloads&lt;/h2&gt;To make sure only the up-to-date source code is available, I&amp;#39;m not publishing releases on the downloads tab. You can always download the latest source on the Source Code tab, just pick the recent changeset number and click Download to download the latest source.&lt;br /&gt;You can view and use the application live at &lt;a href="http://livegeometry.com" class="externalLink"&gt;http://livegeometry.com&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;
&lt;h2&gt;&lt;a href="http://livegeometry.codeplex.com/documentation?referringTitle=Home"&gt;Documentation&lt;/a&gt;&lt;/h2&gt;
&lt;h2&gt;Screenshots&lt;/h2&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=72149" alt="screenshot.png" title="screenshot.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://geometry.osenkov.com/screenshot.png" /&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Sun, 12 Sep 2010 03:33:50 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20100912033350A</guid></item><item><title>New Comment on "CodingGuidelines"</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;ANCHOR#C16474</link><description>concerning possible uses of Live Geometry&amp;#59;&amp;#10;i have not yet dug into it yet, but i am looking at possible application areas&amp;#59;&amp;#10;First some upfront supporting information&amp;#58; I am an electronic engineer who cross trained into MS .NET about 4 years ago. Since that time, my deliverables have consisted of c&amp;#35; windows based applications that provide remote control of connected device under test over USB&amp;#47;LAN and associated electronic test equipment using ivi.com .NET drivers using SCPI&amp;#40;see ivifoundation.org&amp;#41;.&amp;#10;So, in demos that i show to employers, i have an agilent 33220A arbitrary waveform generator that i remote control over USB and LAN&amp;#40;LXI device&amp;#41; using c&amp;#35; 2008 express and sql server 2008 express. I have 2010 tools installed and i have been experimenting with silverlight together with ironpython and ironruby.&amp;#10;&amp;#10;So, what i am looking for in the LIveGeometry is a way to model these waveforms so i can port them to webpage using silverlight. besides waveform generator test equipment i have specialized electronic hardware with both analog to digital and digital to analog capabilties on board. So, using that equipment or using the waveform generator, i want to be able to view the waveforms in my c&amp;#35; .NET GUI.&amp;#10;&amp;#10;My application is targeted to electronic engineers who are working on new product prototypes, so it will contain a waveform editor, an equation editor for output and waveform display for both input and output.&amp;#10;&amp;#10;looking for any suggestions you may have.&amp;#10;&amp;#10;have a good day.&amp;#10;&amp;#10;any suggestions &amp;#47; comments are welcome.</description><author>rharding64</author><pubDate>Tue, 27 Jul 2010 03:11:54 GMT</pubDate><guid isPermaLink="false">New Comment on "CodingGuidelines" 20100727031154A</guid></item><item><title>New Comment on "CodingGuidelines"</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;ANCHOR#C16473</link><description>concerning possible uses of Live Geometry&amp;#59;  &amp;#10;i have not yet dug into it yet, but i am looking at possible application areas&amp;#59;  &amp;#10;First some upfront supporting information&amp;#58;  I am an electronic engineer who cross trained into MS .NET about 4 years ago.  Since that time, my deliverables have consisted of c&amp;#35; windows based applications that provide remote control of connected device under test and associated electronic test equipment using ivi.com .NET drivers using SCPI&amp;#40;see ivifoundation.org&amp;#41;.  &amp;#10;So, in demos that i show to employers, i have an agilent 33220A arbitrary waveform generator that i remote control over USB  and LAN&amp;#40;LXI device&amp;#41; using c&amp;#35; 2008 express and sql server 2008 express. I have 2010 tools installed and i have been experimenting with silverlight together with ironpython and ironruby.  &amp;#10;&amp;#10;So, what i am looking for in the LIveGeometry is a way to model these waveforms so i can port them to webpage using silverlight.  besides waveform generator test equipment i have specialized electronic hardware with both analog to digital and digital to analog capabilties on board.  So, using that equipment or using the waveform generator, i want to be able to view the waveforms in my c&amp;#35; .NET GUI.&amp;#10;&amp;#10;My application is targeted to electronic engineers who are working on new product prototypes, so it will contain a waveform editor, an equation editor for output and waveform display for both input and output. &amp;#10;&amp;#10;looking for any suggestions you may have.&amp;#10;&amp;#10;have a good day.&amp;#10;&amp;#10;any suggestions &amp;#47; comments are welcome.</description><author>rharding64</author><pubDate>Tue, 27 Jul 2010 03:10:49 GMT</pubDate><guid isPermaLink="false">New Comment on "CodingGuidelines" 20100727031049A</guid></item><item><title>New Comment on "Documentation"</title><link>http://livegeometry.codeplex.com/documentation?&amp;ANCHOR#C16024</link><description>Hi guys&amp;#33;&amp;#10;Is there a full detailed document for this project&amp;#63; i really need something like this and i really wonder if you could help me to understand your code&amp;#33;&amp;#10;Thank you&amp;#33;</description><author>MoosaviAmir</author><pubDate>Mon, 14 Jun 2010 05:53:43 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20100614055343A</guid></item><item><title>New Comment on "Documentation"</title><link>http://livegeometry.codeplex.com/documentation?&amp;ANCHOR#C16017</link><description>hi guys&amp;#33;&amp;#10;is there a full detail document for this project&amp;#63; i really need something just  like this and i really wonder if you can help me to understand your code&amp;#33;&amp;#10;thank you&amp;#33;</description><author>MoosaviAmir</author><pubDate>Sun, 13 Jun 2010 08:22:30 GMT</pubDate><guid isPermaLink="false">New Comment on "Documentation" 20100613082230A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://livegeometry.codeplex.com/documentation?version=17</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Documentation&lt;/h1&gt;
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://livegeometry.codeplex.com/wikipage?title=Contributing&amp;referringTitle=Documentation"&gt;Contributing&lt;/a&gt; - contributing to the project, working with source control&lt;/li&gt;
&lt;li&gt;&lt;a href="http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;referringTitle=Documentation"&gt;CodingGuidelines&lt;/a&gt; - the project&amp;#39;s coding guidelines&lt;/li&gt;&lt;/ol&gt;

&lt;h2&gt;Requirements&lt;/h2&gt;The project is built using Visual Studio 2008 with Silverlight Tools installed (currently Silverlight 3.0). The language is C# 3.0, and the projects exist that target both WPF (.NET Framework 3.5) and Silverlight 3.0. Same source code files are used for WPF and Silverlight versions.&lt;br /&gt;
&lt;h2&gt;Source code overview&lt;/h2&gt;
The source code (&lt;a href="http://livegeometry.codeplex.com/SourceControl/changeset/view/23690" class="externalLink"&gt;Main&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;) consists of several projects:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;DynamicGeometryLibrary&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
The dynamic geometry library (framework) that provides types and services to model geometric figures and drawings.&lt;br /&gt;DynamicGeometry.csproj is the WPF (desktop) project, and SilverlightDynamicGeometry.csproj is the Silverlight project. They both reference the same set of .cs files.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;SilverlightClient&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
Silverlight client application (front-end) for the Dynamic Geometry library.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;WPFClient&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
WPF (desktop) version. It is currently less maintained and I concentrate more efforts on the Silverlight version. It doesn&amp;#39;t expose all the feature that are available in the DynamicGeometryLibrary yet. I will come back to WPF at a later point and update it to surface more features and to reach parity with Silverlight client.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Samples&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
Samples folder currently contains one sample application that is built on top of the dynamic geometry library. It is called PolylineRouting and it is a simple app that connects two dots with the shortest path around a polygon. Read more here: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/06/07/algorithms-in-c-shortest-path-around-a-polygon-polyline-routing.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/06/07/algorithms-in-c-shortest-path-around-a-polygon-polyline-routing.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Drawing.cs&lt;/h2&gt;
The central class of the DynamicGeometry library is a Drawing. A Drawing represents a set of figures as a logical entity. It&amp;#39;s not a WPF/Silverlight control, so you can&amp;#39;t directly place a Drawing on a Canvas. Instead, you can associate a Drawing with any existing Canvas control. A Drawing HAS a Canvas, not Drawing IS Canvas.&lt;br /&gt;A Drawing references several other parts, such as a RootFigureList, an ActionManager, a Behavior, a CoordinateSystem, a CoordinateGrid (CartesianGrid) etc.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=71709" alt="Drawing.png" title="Drawing.png" /&gt;&lt;br /&gt;&lt;br /&gt;To experiment with hosting a Drawing on your own Canvas, you can view the PolylineRouting sample: &lt;a href="http://livegeometry.codeplex.com/sourcecontrol/changeset/view/23690?projectName=LiveGeometry#397865" class="externalLink"&gt;Main\Samples\PolylineRouting\Page.xaml.cs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;FigureList.cs&lt;/h2&gt;
A FigureList is a list of figures in a Drawing. Actually, Drawing references a derived class called RootFigureList.&lt;br /&gt;
&lt;h2&gt;Dependency Tracking&lt;/h2&gt;
Dynamic geometry stores an algorithm of a construction, and figure coordinates are recalculated every time a drawing is changed. All the figures are classified into three groups: independent, semi-dependent and dependent.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Figures can be independent of other figures, for instance a point can exist all by itself and its coordinates are determined by the user who drags the point around.&lt;/li&gt;
&lt;li&gt;Other figures can be partially dependent on other figures (for example, a point on a line can be both dragged by the user or moved with the line as the line moves around).&lt;/li&gt;
&lt;li&gt;Finally, a figure can be fully dependent on other figures. For example, a segment is fully defined by two points, so the user has no way of influencing the segment other than moving its endpoints. A caveat here is that if you drag a dependent figure, the dynamic geometry engine computes the least set of independent figures that fully defines the one the user is dragging, and drags this set, so the user has the impression of dragging the figure itself.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;Independent figures are: Point, Label, Hyperlink, FunctionGraph.&lt;/li&gt;
&lt;li&gt;Semi-dependent figure is: PointOnFigure.&lt;/li&gt;
&lt;li&gt;All other figures are dependent (e.g. Segment, Line, Circle, IntersectionOfCircleAndLine, Polygon, CoordinatesMeasurement, etc.)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;A figure can have dependencies (figures it depends on) and dependents (figures that are depending on it). This relationship can be modeled using &amp;quot;in&amp;quot; and &amp;quot;out&amp;quot; edges of a dependency graph. The dependency graph doesn&amp;#39;t have cycles, so it&amp;#39;s really a &lt;a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph" class="externalLink"&gt;DAG&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since all the figures form a DAG with respect to the dependency relationship, we sort the figures using &lt;a href="http://en.wikipedia.org/wiki/Topological_sorting" class="externalLink"&gt;topological sorting&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Here&amp;#39;s an example of the DAG for a circle circumscribed around a triangle (dependencies are in parentheses):&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=71727" alt="CircumscribedCircle.PNG" title="CircumscribedCircle.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;1. Point&lt;br /&gt;2. Point&lt;br /&gt;3. Point&lt;br /&gt;4. Segment (1, 2)&lt;br /&gt;5. Segment (2, 3)&lt;br /&gt;6. Segment (1, 3)&lt;br /&gt;7. Midpoint (1, 2)&lt;br /&gt;8. Midpoint (1, 3)&lt;br /&gt;9. Perpendicular (7, 4)&lt;br /&gt;10. Perpendicular (8, 6)&lt;br /&gt;11. Intersection (9, 10)&lt;br /&gt;12. Circle (11, 1)&lt;br /&gt;&lt;br /&gt;This is sufficient description to fully define the drawing given the coordinates of the first three points as input. The coordinates of all figures are recalculated every time an independent or semi-dependent figure has been moved by user. Figures are recalculated in topological order (top-to-bottom in our example). Topological order means that all dependencies of each figure come before it (and all dependents come after it). A drawing is usually fully defined by several independent figures (points). &lt;br /&gt;&lt;br /&gt;Each figure (IFigure) has a property called Dependencies, which is a list of figures that the current figure depends on. Also each figure has a property called Dependents which stores all figures that directly depend on this one. When a new figure is created, a RegisterWithDependencies() method is called, that fills the new figure&amp;#39;s Dependencies list and then goes through all the figures in it and adds the new figure to their Dependents list. So the relationship is bi-directional. &lt;br /&gt;&lt;br /&gt;The TopologicalSort method is used to sort all figures topologically with regards to the dependency relationship. You can read more at : &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/08/10/representing-dependencies-in-code.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2008/08/10/representing-dependencies-in-code.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Function Graphs&lt;/h2&gt;
The Silverlight client exposes a feature that allows the user to plot function graphs given a string such as &amp;quot;sin(x)&amp;quot; or &amp;quot;x*2 + 3&amp;quot;. To evaluate arithmetical expression, we host the DLR and piggyback on its ability to compile a string to an executable delegate. Read more at: &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/26/dlr-hosting-in-silverlight.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/26/dlr-hosting-in-silverlight.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:57:34 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20100412065734A</guid></item><item><title>Updated Wiki: Documentation</title><link>http://livegeometry.codeplex.com/documentation?version=16</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Documentation&lt;/h1&gt;
&lt;h2&gt;Contributing to the project&lt;/h2&gt;&lt;a href="http://livegeometry.codeplex.com/wikipage?title=Contributing&amp;referringTitle=Documentation"&gt;Contributing&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Requirements&lt;/h2&gt;The project is built using Visual Studio 2008 with Silverlight Tools installed (currently Silverlight 3.0). The language is C# 3.0, and the projects exist that target both WPF (.NET Framework 3.5) and Silverlight 3.0. Same source code files are used for WPF and Silverlight versions.&lt;br /&gt;
&lt;h2&gt;Source code overview&lt;/h2&gt;
The source code (&lt;a href="http://livegeometry.codeplex.com/SourceControl/changeset/view/23690" class="externalLink"&gt;Main&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;) consists of several projects:
&lt;ul&gt;&lt;li&gt;&lt;b&gt;DynamicGeometryLibrary&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
The dynamic geometry library (framework) that provides types and services to model geometric figures and drawings.&lt;br /&gt;DynamicGeometry.csproj is the WPF (desktop) project, and SilverlightDynamicGeometry.csproj is the Silverlight project. They both reference the same set of .cs files.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;SilverlightClient&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
Silverlight client application (front-end) for the Dynamic Geometry library.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;WPFClient&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
WPF (desktop) version. It is currently less maintained and I concentrate more efforts on the Silverlight version. It doesn&amp;#39;t expose all the feature that are available in the DynamicGeometryLibrary yet. I will come back to WPF at a later point and update it to surface more features and to reach parity with Silverlight client.
&lt;ul&gt;&lt;li&gt;&lt;b&gt;Samples&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;
Samples folder currently contains one sample application that is built on top of the dynamic geometry library. It is called PolylineRouting and it is a simple app that connects two dots with the shortest path around a polygon. Read more here: &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/06/07/algorithms-in-c-shortest-path-around-a-polygon-polyline-routing.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/06/07/algorithms-in-c-shortest-path-around-a-polygon-polyline-routing.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Drawing.cs&lt;/h2&gt;
The central class of the DynamicGeometry library is a Drawing. A Drawing represents a set of figures as a logical entity. It&amp;#39;s not a WPF/Silverlight control, so you can&amp;#39;t directly place a Drawing on a Canvas. Instead, you can associate a Drawing with any existing Canvas control. A Drawing HAS a Canvas, not Drawing IS Canvas.&lt;br /&gt;A Drawing references several other parts, such as a RootFigureList, an ActionManager, a Behavior, a CoordinateSystem, a CoordinateGrid (CartesianGrid) etc.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=71709" alt="Drawing.png" title="Drawing.png" /&gt;&lt;br /&gt;&lt;br /&gt;To experiment with hosting a Drawing on your own Canvas, you can view the PolylineRouting sample: &lt;a href="http://livegeometry.codeplex.com/sourcecontrol/changeset/view/23690?projectName=LiveGeometry#397865" class="externalLink"&gt;Main\Samples\PolylineRouting\Page.xaml.cs&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;FigureList.cs&lt;/h2&gt;
A FigureList is a list of figures in a Drawing. Actually, Drawing references a derived class called RootFigureList.&lt;br /&gt;
&lt;h2&gt;Dependency Tracking&lt;/h2&gt;
Dynamic geometry stores an algorithm of a construction, and figure coordinates are recalculated every time a drawing is changed. All the figures are classified into three groups: independent, semi-dependent and dependent.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Figures can be independent of other figures, for instance a point can exist all by itself and its coordinates are determined by the user who drags the point around.&lt;/li&gt;
&lt;li&gt;Other figures can be partially dependent on other figures (for example, a point on a line can be both dragged by the user or moved with the line as the line moves around).&lt;/li&gt;
&lt;li&gt;Finally, a figure can be fully dependent on other figures. For example, a segment is fully defined by two points, so the user has no way of influencing the segment other than moving its endpoints. A caveat here is that if you drag a dependent figure, the dynamic geometry engine computes the least set of independent figures that fully defines the one the user is dragging, and drags this set, so the user has the impression of dragging the figure itself.&lt;/li&gt;&lt;/ul&gt;

&lt;ul&gt;&lt;li&gt;Independent figures are: Point, Label, Hyperlink, FunctionGraph.&lt;/li&gt;
&lt;li&gt;Semi-dependent figure is: PointOnFigure.&lt;/li&gt;
&lt;li&gt;All other figures are dependent (e.g. Segment, Line, Circle, IntersectionOfCircleAndLine, Polygon, CoordinatesMeasurement, etc.)&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;A figure can have dependencies (figures it depends on) and dependents (figures that are depending on it). This relationship can be modeled using &amp;quot;in&amp;quot; and &amp;quot;out&amp;quot; edges of a dependency graph. The dependency graph doesn&amp;#39;t have cycles, so it&amp;#39;s really a &lt;a href="http://en.wikipedia.org/wiki/Directed_acyclic_graph" class="externalLink"&gt;DAG&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Since all the figures form a DAG with respect to the dependency relationship, we sort the figures using &lt;a href="http://en.wikipedia.org/wiki/Topological_sorting" class="externalLink"&gt;topological sorting&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Here&amp;#39;s an example of the DAG for a circle circumscribed around a triangle (dependencies are in parentheses):&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=LiveGeometry&amp;DownloadId=71727" alt="CircumscribedCircle.PNG" title="CircumscribedCircle.PNG" /&gt;&lt;br /&gt;&lt;br /&gt;1. Point&lt;br /&gt;2. Point&lt;br /&gt;3. Point&lt;br /&gt;4. Segment (1, 2)&lt;br /&gt;5. Segment (2, 3)&lt;br /&gt;6. Segment (1, 3)&lt;br /&gt;7. Midpoint (1, 2)&lt;br /&gt;8. Midpoint (1, 3)&lt;br /&gt;9. Perpendicular (7, 4)&lt;br /&gt;10. Perpendicular (8, 6)&lt;br /&gt;11. Intersection (9, 10)&lt;br /&gt;12. Circle (11, 1)&lt;br /&gt;&lt;br /&gt;This is sufficient description to fully define the drawing given the coordinates of the first three points as input. The coordinates of all figures are recalculated every time an independent or semi-dependent figure has been moved by user. Figures are recalculated in topological order (top-to-bottom in our example). Topological order means that all dependencies of each figure come before it (and all dependents come after it). A drawing is usually fully defined by several independent figures (points). &lt;br /&gt;&lt;br /&gt;Each figure (IFigure) has a property called Dependencies, which is a list of figures that the current figure depends on. Also each figure has a property called Dependents which stores all figures that directly depend on this one. When a new figure is created, a RegisterWithDependencies() method is called, that fills the new figure&amp;#39;s Dependencies list and then goes through all the figures in it and adds the new figure to their Dependents list. So the relationship is bi-directional. &lt;br /&gt;&lt;br /&gt;The TopologicalSort method is used to sort all figures topologically with regards to the dependency relationship. You can read more at : &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/08/10/representing-dependencies-in-code.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2008/08/10/representing-dependencies-in-code.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h2&gt;Function Graphs&lt;/h2&gt;
The Silverlight client exposes a feature that allows the user to plot function graphs given a string such as &amp;quot;sin(x)&amp;quot; or &amp;quot;x*2 + 3&amp;quot;. To evaluate arithmetical expression, we host the DLR and piggyback on its ability to compile a string to an executable delegate. Read more at: &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/26/dlr-hosting-in-silverlight.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/26/dlr-hosting-in-silverlight.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:56:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Documentation 20100412065647A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=9</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement, file names and folder structure are very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters. This is the default Visual Studio setting.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;&lt;pre&gt;
block 
{
    stuff
}
&lt;/pre&gt;&lt;br /&gt;and not like this:&lt;br /&gt;&lt;pre&gt;
block {
    stuff
}
&lt;/pre&gt;&lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;&lt;pre&gt;
if (something)
{
    something else;
}
&lt;/pre&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;pre&gt;
if (something)
    something else;
&lt;/pre&gt;&lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;&lt;span class="codeInline"&gt; AssignValue(instance); // assigns a value to instance &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt;&lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; Console.In.Read(myChar, 0, 1); &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; Console.In.Read(myChar,0,1); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo(myChar, 0, 1) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo( myChar, 0, 1 ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo() &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo () &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; x = dataArray[index]; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; x = dataArray[ index ]; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; while (x == y), if (true) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; while(x==y), if(true) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; if (x == y), a = 2 + 3; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; if (x==y), a=2+3; &lt;/span&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;]&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Names of types, members and enums (except fields): PascalCasing &lt;/li&gt;
&lt;li&gt;names of parameters, local variables and fields: camelCasing &lt;/li&gt;
&lt;li&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;/li&gt;
&lt;li&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;/li&gt;
&lt;li&gt;Prefix interfaces with I &lt;/li&gt;
&lt;li&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;/li&gt;
&lt;li&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Use full words instead of shortened words: &lt;br /&gt;expectedFilenames expFilenames&lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt;Use shorter boolean conditionals:&lt;br /&gt;&lt;span class="codeInline"&gt; if (X) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == true) &lt;/span&gt;&lt;br /&gt;&lt;span class="codeInline"&gt; if (!X) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == false) &lt;/span&gt;&lt;br /&gt;&lt;span class="codeInline"&gt; if (X &amp;amp;&amp;amp; !Y) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == true &amp;amp;&amp;amp; Y == false) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:55:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412065547A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=8</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement, file names and folder structure are very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters. This is the default Visual Studio setting.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;&lt;pre&gt;
block 
{
    stuff
}
&lt;/pre&gt;&lt;br /&gt;and not like this:&lt;br /&gt;&lt;pre&gt;
block {
    stuff
}
&lt;/pre&gt;&lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;&lt;pre&gt;
if (something)
{
    something else;
}
&lt;/pre&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;pre&gt;
if (something)
    something else;
&lt;/pre&gt;&lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; Console.In.Read(myChar, 0, 1); &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; Console.In.Read(myChar,0,1); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo(myChar, 0, 1) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo( myChar, 0, 1 ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo() &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo () &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; x = dataArray[index]; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; x = dataArray[ index ]; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; while (x == y), if (true) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; while(x==y), if(true) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; if (x == y), a = 2 + 3; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; if (x==y), a=2+3; &lt;/span&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;]&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Names of types, members and enums (except fields): PascalCasing &lt;/li&gt;
&lt;li&gt;names of parameters, local variables and fields: camelCasing &lt;/li&gt;
&lt;li&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;/li&gt;
&lt;li&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;/li&gt;
&lt;li&gt;Prefix interfaces with I &lt;/li&gt;
&lt;li&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;/li&gt;
&lt;li&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;/li&gt;&lt;/ul&gt;
&lt;br /&gt;Use full words instead of shortened words: &lt;br /&gt;expectedFilenames expFilenames&lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt;Use shorter boolean conditionals:&lt;br /&gt;&lt;span class="codeInline"&gt; if (X) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == true) &lt;/span&gt;&lt;br /&gt;&lt;span class="codeInline"&gt; if (!X) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == false) &lt;/span&gt;&lt;br /&gt;&lt;span class="codeInline"&gt; if (X &amp;amp;&amp;amp; !Y) &lt;/span&gt; instead of &lt;span class="codeInline"&gt; if (X == true &amp;amp;&amp;amp; Y == false) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:55:23 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412065523A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=7</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement, file names and folder structure are very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters. This is the default Visual Studio setting.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;&lt;pre&gt;
block 
{
    stuff
}
&lt;/pre&gt;&lt;br /&gt;and not like this:&lt;br /&gt;&lt;pre&gt;
block {
    stuff
}
&lt;/pre&gt;&lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;&lt;pre&gt;
if (something)
{
    something else;
}
&lt;/pre&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;pre&gt;
if (something)
    something else;
&lt;/pre&gt;&lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; Console.In.Read(myChar, 0, 1); &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; Console.In.Read(myChar,0,1); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo(myChar, 0, 1) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo( myChar, 0, 1 ) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; CreateFoo() &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; CreateFoo () &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; x = dataArray[index]; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; x = dataArray[ index ]; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; while (x == y), if (true) &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; while(x==y), if(true) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; if (x == y), a = 2 + 3; &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; if (x==y), a=2+3; &lt;/span&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:52:37 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412065237A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=6</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement, file names and folder structure are very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters. This is the default Visual Studio setting.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;&lt;pre&gt;
block 
{
    stuff
}
&lt;/pre&gt;&lt;br /&gt;and not like this:&lt;br /&gt;&lt;pre&gt;
block {
    stuff
}
&lt;/pre&gt;&lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;&lt;pre&gt;
if (something)
{
    something else;
}
&lt;/pre&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;pre&gt;
if (something)
    something else;
&lt;/pre&gt;&lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;
It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: &lt;span class="codeInline"&gt; Console.In.Read(myChar, 0, 1); &lt;/span&gt;&lt;br /&gt;Wrong: &lt;span class="codeInline"&gt; Console.In.Read(myChar,0,1); &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;&lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;&lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;&lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:51:20 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412065120A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=5</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement, file names and folder structure are very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters. This is the default Visual Studio setting.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;&lt;pre&gt;
block 
{
    stuff
}
&lt;/pre&gt;&lt;br /&gt;and not like this:&lt;br /&gt;&lt;pre&gt;
block {
    stuff
}
&lt;/pre&gt;&lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;&lt;pre&gt;
if (something)
{
    something else;
}
&lt;/pre&gt;&lt;br /&gt;and not:&lt;br /&gt;&lt;pre&gt;
if (something)
    something else;
&lt;/pre&gt;&lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;
It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: Console.In.Read(myChar, 0, 1); &lt;br /&gt;Wrong: Console.In.Read(myChar,0,1); &lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:50:05 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412065005A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=4</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement is very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;block &lt;br /&gt;{&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt;and not like this:&lt;br /&gt;block {&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;if (something)&lt;br /&gt;{&lt;br /&gt;    something else;&lt;br /&gt;}&lt;br /&gt;and not:&lt;br /&gt;if (something)&lt;br /&gt;    something else;&lt;br /&gt; &lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;
It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: Console.In.Read(myChar, 0, 1); &lt;br /&gt;Wrong: Console.In.Read(myChar,0,1); &lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:48:18 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412064818A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=3</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable, with no discrepancies.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Design Guidelines for Class Library Developers: &lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Krzysztof Cwalina: &lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Brad Abrams: &lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kirill Osenkov (whitespace guidelines): &lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
 
&lt;h2&gt;Project/solution structure&lt;/h2&gt;File placement is very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;block &lt;br /&gt;{&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt;and not like this:&lt;br /&gt;block {&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;if (something)&lt;br /&gt;{&lt;br /&gt;    something else;&lt;br /&gt;}&lt;br /&gt;and not:&lt;br /&gt;if (something)&lt;br /&gt;    something else;&lt;br /&gt; &lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;
It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: Console.In.Read(myChar, 0, 1); &lt;br /&gt;Wrong: Console.In.Read(myChar,0,1); &lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Type and Member design&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/li&gt;
&lt;li&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;/li&gt;&lt;/ul&gt;

&lt;h2&gt;Library usage&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;/li&gt;
&lt;li&gt;Use Path.Combine to concatenate parts of a path &lt;/li&gt;
&lt;li&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;/li&gt;&lt;/ul&gt;
&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:47:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412064738A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=2</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable, with no discrepancies.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt;Design Guidelines for Class Library Developers:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Krzysztof Cwalina:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Brad Abrams:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Kirill Osenkov (whitespace guidelines):&lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; 
&lt;h2&gt;Project/solution structure&lt;/h2&gt; &lt;br /&gt;File placement is very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;br /&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;br /&gt;Use Path.Combine to concatenate parts of a path &lt;br /&gt;Use File.ReadAllText(string) to read text from a file into a string
&lt;h2&gt;Tabs and indenting&lt;/h2&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters.&lt;br /&gt; 
&lt;h2&gt;Curlies&lt;/h2&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;block &lt;br /&gt;{&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt;and not like this:&lt;br /&gt;block {&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;if (something)&lt;br /&gt;{&lt;br /&gt;    something else;&lt;br /&gt;}&lt;br /&gt;and not:&lt;br /&gt;if (something)&lt;br /&gt;    something else;&lt;br /&gt; &lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;
&lt;h2&gt;Commenting&lt;/h2&gt;
It&amp;#39;s OK to not have comments, since the code is still very much in flux. However it helps to have comments in difficult parts of the code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Don&amp;#39;t&lt;/b&gt; use obvious comments that can be inferred by just reading the code:&lt;br /&gt;AssignValue(instance); // assigns a value to instance&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; 
&lt;h2&gt;Spacing&lt;/h2&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: Console.In.Read(myChar, 0, 1); &lt;br /&gt;Wrong: Console.In.Read(myChar,0,1); &lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;&lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt;&lt;br /&gt; 
&lt;h2&gt;Vertical spacing:&lt;/h2&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; 
&lt;h2&gt;Naming conventions&lt;/h2&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  
&lt;h2&gt;Method level&lt;/h2&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; 
&lt;h2&gt;Member design&lt;/h2&gt;
Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:45:57 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412064557A</guid></item><item><title>Updated Wiki: CodingGuidelines</title><link>http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;version=1</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Live Geometry Coding Guidelines&lt;/h1&gt;This is a live document, please edit and add stuff as necessary. Every edit should be reviewed or discussed with the team.&lt;br /&gt; &lt;br /&gt;Goals: the code should be uniform, consistent, readable, with no discrepancies.&lt;br /&gt; 
&lt;h2&gt;Links:&lt;/h2&gt; &lt;br /&gt;Design Guidelines for Class Library Developers:&lt;br /&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx" class="externalLink"&gt;http://msdn2.microsoft.com/en-us/library/czefa0ke(vs.71).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Krzysztof Cwalina:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx" class="externalLink"&gt;http://blogs.msdn.com/kcwalina/archive/2004/09/28/235232.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Brad Abrams:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/brada/articles/361363.aspx" class="externalLink"&gt;http://blogs.msdn.com/brada/articles/361363.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Kirill Osenkov (whitespace guidelines):&lt;br /&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx" class="externalLink"&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt; 
&lt;h2&gt;Project/solution structure&lt;/h2&gt; &lt;br /&gt;File placement is very important. Carefully think when adding a new file, because changing the file structure is costly! If in doubt, ask other team members.&lt;br /&gt;User Defined Types - we are encouraged to define and use user defined types to clearly capture the intent of the code. Don&amp;#39;t be afraid of adding a new user defined type.&lt;br /&gt;Use FileInfo and DirectoryInfo instead of strings to store file and directory names &lt;br /&gt;Use Path.Combine to concatenate parts of a path &lt;br /&gt;Use File.ReadAllText(string) to read text from a file into a string&lt;br /&gt;Tabs and indenting&lt;br /&gt; &lt;br /&gt;Tools -&amp;gt; Options -&amp;gt; Text Editor -&amp;gt; Tabs -&amp;gt; Insert spaces, tab size = 4&lt;br /&gt;(Tab characters (\0x09) should not be used in code. All indentation should be done with 4 space characters.)&lt;br /&gt; &lt;br /&gt;Feel free to make use sufficient amount of vertical space in your source files.  Source code should be readable and sufficient vertical space enhances readability.&lt;br /&gt; &lt;br /&gt;Bracing&lt;br /&gt; &lt;br /&gt;Opening curly of a block should be on a new line like this:&lt;br /&gt;block &lt;br /&gt;{&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt;and not like this:&lt;br /&gt;block {&lt;br /&gt;    stuff&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;One line flow-control statements should still include a block statement:&lt;br /&gt;if (something)&lt;br /&gt;{&lt;br /&gt;    something else;&lt;br /&gt;}&lt;br /&gt;and not:&lt;br /&gt;if (something)&lt;br /&gt;    something else;&lt;br /&gt; &lt;br /&gt;This enhances maintainability by ensuring that someone modifying the code at a later date will not forget to add the braces.&lt;br /&gt; &lt;br /&gt;This style will be applied consistently to all code construct that require an open/close brace pair (classes, namespaces in C#, method block, etc.)&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Commenting&lt;br /&gt;&lt;br /&gt;Comments should be used to describe intention, algorithmic overview, and/or logical flow.  It would be ideal, if from reading the comments alone, someone other than the author could understand a function’s intended behavior and general operation. While there are no minimum comment requirements and certainly some very small routines need no commenting at all, it is hoped that most routines will have comments reflecting the programmer’s intent and approach.&lt;br /&gt; &lt;br /&gt;Types and members should use XML doc comments.&lt;br /&gt; &lt;br /&gt;Spacing&lt;br /&gt; &lt;br /&gt;Spaces improve readability by decreasing code density. Here are some guidelines for the use of space characters within code:&lt;br /&gt; &lt;br /&gt;Do use a single space after a comma between method arguments: &lt;br /&gt;Right: Console.In.Read(myChar, 0, 1); &lt;br /&gt;Wrong: Console.In.Read(myChar,0,1); &lt;br /&gt;Do not use a space after the parenthesis and method arguments: &lt;br /&gt;Right: CreateFoo(myChar, 0, 1) &lt;br /&gt;Wrong: CreateFoo( myChar, 0, 1 ) &lt;br /&gt;Do not use spaces between a method name and parenthesis: &lt;br /&gt;Right: CreateFoo() &lt;br /&gt;Wrong: CreateFoo () &lt;br /&gt;Do not use spaces inside brackets: &lt;br /&gt;Right: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Wrong: x = dataArray&lt;a href="http://livegeometry.codeplex.com/wikipage?title=index&amp;referringTitle=CodingGuidelines"&gt;index&lt;/a&gt;; &lt;br /&gt;Do use a single space before flow control statements: &lt;br /&gt;Right: while (x == y), if (true) &lt;br /&gt;Wrong: while(x==y), if(true) &lt;br /&gt;Do use a single space before and after binary operators: &lt;br /&gt;Right: if (x == y), a = 2 + 3; &lt;br /&gt;Wrong: if (x==y), a=2+3; &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Vertical spacing:&lt;br /&gt; &lt;br /&gt;http://blogs.msdn.com/kirillosenkov/archive/2009/03/12/kirill-s-whitespace-guidelines-for-c.aspx&lt;br /&gt; &lt;br /&gt;Naming conventions&lt;br /&gt; &lt;br /&gt;http://msdn2.microsoft.com/en-us/library/xzf533w0(vs.71).aspx&lt;br /&gt;Follow all .NET Framework Design Guidelines for both internal and external members. Highlights of these include:&lt;br /&gt;&lt;br /&gt;Names of types, members and enums (except fields): PascalCasing &lt;br /&gt;names of parameters, local variables and fields: camelCasing &lt;br /&gt;NO&lt;i&gt;SCREAMING&lt;/i&gt;CAPS &lt;br /&gt;no&lt;i&gt;underscores&lt;/i&gt;if_possible &lt;br /&gt;Prefix interfaces with I &lt;br /&gt;Do not use Hungarian notation (bstrSomething, frmMain)&lt;br /&gt;DontAbbrevLngWrdsBcseAbbrAreUsuDffcltToRd:&lt;br /&gt;&lt;br /&gt;Use: instead of: &lt;br /&gt;expectedFilenames expFilenames &lt;br /&gt;expectedMessageResourceIDs expMsgResIDs &lt;br /&gt;localizedErrorMessage localizedErrMsg &lt;br /&gt;modifier mod &lt;br /&gt;projectReference projRef &lt;br /&gt;languageOptions langOptions &lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Method level&lt;br /&gt; &lt;br /&gt;Variable initialization and declaration: the assignment operators should be aligned under each other like this:&lt;br /&gt; &lt;br /&gt;int i         = 0&lt;br /&gt;string j    = 0&lt;br /&gt; &lt;br /&gt;Use shorter boolean conditionals:&lt;br /&gt;Use: instead of: &lt;br /&gt;if (X) if (X == true) &lt;br /&gt;if (!X) if (X == false) &lt;br /&gt;if (X &amp;amp;&amp;amp; !Y) if (X == true &amp;amp;&amp;amp; Y == false) &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;Don&amp;#39;t use the old C&lt;u&gt;&lt;/u&gt; convention if (null == stuff), use if (stuff == null).&lt;br /&gt; &lt;br /&gt;Member design&lt;br /&gt; &lt;br /&gt;Avoid using fields - use either properties or auto-properties (PascalCasing).&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:38:35 GMT</pubDate><guid isPermaLink="false">Updated Wiki: CodingGuidelines 20100412063835A</guid></item><item><title>Updated Wiki: Contributing</title><link>http://livegeometry.codeplex.com/wikipage?title=Contributing&amp;version=14</link><description>&lt;div class="wikidoc"&gt;&lt;h1&gt;Contributing to the project&lt;/h1&gt;&lt;h2&gt;Getting the source&lt;/h2&gt;All the tools necessary to work with the project (except for Visual Studio itself) are free.&lt;br /&gt;The page &lt;a href="http://livegeometry.codeplex.com/SourceControl/list/changesets" class="externalLink"&gt;http://livegeometry.codeplex.com/SourceControl/list/changesets&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; on the right-hand side shows the choices of version control client that you can use to follow the project and make edits.
&lt;ol&gt;&lt;li&gt;If you&amp;#39;re not a developer on the project, unfortunately you cannot use the (&lt;a href="http://codeplex.codeplex.com/wikipage?title=Obtaining%20the%20Team%20Explorer%20Client&amp;amp;ProjectName=codeplex" class="externalLink"&gt;Team Foundation Client&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;) that installs into Visual Studio. You have two choices: install a free Subversion client (recommended: &lt;a href="http://tortoisesvn.net" class="externalLink"&gt;TortoiseSVN&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;) or the &lt;a href="http://codeplexclient.codeplex.com" class="externalLink"&gt;CodePlex client&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;If you ARE a developer on the project, things are much easier. If you have Visual Studio 2008, make sure to install Team Explorer (from the TFC folder in the Visual Studio 2008 installation DVD or from &lt;a href="http://codeplex.codeplex.com/wikipage?title=Obtaining%20the%20Team%20Explorer%20Client&amp;amp;ProjectName=codeplex" class="externalLink"&gt;here&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. If you have Visual Studio 2010, Team Explorer comes preinstalled (unless you&amp;#39;re running Express), so you don&amp;#39;t have to do anything.&lt;/li&gt;&lt;/ol&gt;
If you&amp;#39;re following the project, it is recommended that you use a version control client such as TortoiseSVN and regularly download new versions using SVN Update, instead of manually downloading the changeset archives for new versions. It will save you a lot of time - updating using SVN Update or the CodePlex client is one command - you don&amp;#39;t have to download and extract the full source code all over again.
&lt;h2&gt;Submitting changes&lt;/h2&gt;There are several ways to contribute your source code changes to the project.
&lt;ol&gt;&lt;li&gt;&lt;b&gt;TFS shelveset (preferred)&lt;/b&gt;. The most preferred way to send me code for approval is using TFS shelvesets. If you&amp;#39;re a developer and you&amp;#39;re using the Team Foundation Client that is built into Visual Studio (recommended), just Shelve Pending Changes and let me know the shelveset name. I will be able to unshelve your changes on my side, review them and check in. Shelvesets are a great way to share code, much better than patches or archived code files. Read more about Shelvesets here: &lt;a href="http://msdn.microsoft.com/en-us/library/ms181403(VS.80).aspx" class="externalLink"&gt;http://msdn.microsoft.com/en-us/library/ms181403(VS.80).aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Subversion patch&lt;/b&gt;. If you use TortoiseSVN or other Subversion client to follow the project, use the Create patch context menu option on the root of your working copy folder, and upload the patch on the LiveGeometry project website (&lt;a href="http://livegeometry.codeplex.com/SourceControl/UploadPatch.aspx" class="externalLink"&gt;http://livegeometry.codeplex.com/SourceControl/UploadPatch.aspx&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Check-in directly&lt;/b&gt;. If you&amp;#39;re a developer on the project, feel free to just check in (although if you&amp;#39;re unsure, I&amp;#39;d be happy to review a shelveset or a patch). Live Geometry is still in its early stages, so I can always refactor and improve the code as necessary, so don&amp;#39;t be afraid to break things.&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;Coding guidelines&lt;/h2&gt;I am very passionate about clean code and uniform coding guidelines, so one thing I ask of contributors is to maintain these guidelines. So please bear with me if I ask you to correct a thing or two about your source code.&lt;br /&gt;&lt;a href="http://livegeometry.codeplex.com/wikipage?title=CodingGuidelines&amp;referringTitle=Contributing"&gt;CodingGuidelines&lt;/a&gt;&lt;/div&gt;&lt;div class="ClearBoth"&gt;&lt;/div&gt;</description><author>KirillOsenkov</author><pubDate>Mon, 12 Apr 2010 06:35:47 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Contributing 20100412063547A</guid></item></channel></rss>