<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://msmvps.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Paulo Morgado : CodingConventions</title><link>http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx</link><description>Tags: CodingConventions</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>StyleCop 4.3 Is Out</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/08/21/stylecop-4-3-is-out.aspx</link><pubDate>Wed, 20 Aug 2008 23:36:21 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1645290</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1645290</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1645290</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/08/21/stylecop-4-3-is-out.aspx#comments</comments><description>&lt;a&gt;&lt;/a&gt;  &lt;p&gt;The &lt;a title="Microsoft StyleCop" href="http://blogs.msdn.com/sourceanalysis/" target="_blank"&gt;StyleCop team&lt;/a&gt; &lt;a title="StyleCop 4.3 Is Released" href="http://blogs.msdn.com/sourceanalysis/archive/2008/08/19/stylecop-4-3-is-released.aspx" target="_blank"&gt;announced&lt;/a&gt; the release of a version 4.3 of the &lt;a title="Microsoft StyleCop" href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank"&gt;StyleCop tool&lt;/a&gt;. You can get it from &lt;a title="StyleCop 4.3" href="http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sourceanalysis&amp;amp;ReleaseId=1425" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;a&gt;&lt;/a&gt;  &lt;p&gt;On this version there are some bug fixes, new rules and documentation.&lt;/p&gt; &lt;a&gt;&lt;/a&gt;  &lt;p&gt;Also in this version, the list of errors and warnings goes to the &lt;strong&gt;Errors List&lt;/strong&gt; window like with the compilers. I whish that the errors and warnings would also be sent to the &lt;strong&gt;Output&lt;/strong&gt; window.&lt;/p&gt; &lt;a&gt;&lt;/a&gt;  &lt;p&gt;SDK documentation on how to author custom rules and integrate the tool with custom build environments is expected soon.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1645290" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>Microsoft Source Analysis for C# (aka StyleCop)</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/06/05/microsoft-source-analysis-for-c-aka-stylecop.aspx</link><pubDate>Wed, 04 Jun 2008 23:12:22 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1631418</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1631418</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1631418</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/06/05/microsoft-source-analysis-for-c-aka-stylecop.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;I’ve learned from a &lt;a title="Hugo Ribeiro" href="http://www.arquitecturadesoftware.org/blogs/hugoribeiro/default.aspx" target="_blank"&gt;fellow&lt;/a&gt; &lt;a title="Grupo de Arquitectura de Software Português" href="http://www.arquitecturadesoftware.org/" target="_blank"&gt;GASP&lt;/a&gt;er of the release of &lt;a title="Announcing the release of Microsoft Source Analysis for C#" href="http://blogs.msdn.com/sourceanalysis/archive/2008/05/23/announcing-the-release-of-microsoft-source-analysis.aspx" target="_blank"&gt;Microsoft Source Analysis for C# (aka StyleCop)&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;It’s still a work in progress but it’s already very useful.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1631418" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Tools/default.aspx">Tools</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/VisualStudio/default.aspx">VisualStudio</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>Naming Conventions For Unit Testing</title><link>http://msmvps.com/blogs/paulomorgado/archive/2008/01/27/naming-conventions-for-unit-testing.aspx</link><pubDate>Sun, 27 Jan 2008 22:13:36 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:1483096</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=1483096</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=1483096</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2008/01/27/naming-conventions-for-unit-testing.aspx#comments</comments><description>&lt;p&gt;Reading &lt;a title="ISerializable - Roy Osherove&amp;#39;s Blog" href="http://weblogs.asp.net/rosherove/" target="_blank"&gt;Roy Osherove&lt;/a&gt;&amp;#39;s &lt;a title="Naming standards for unit tests" href="http://weblogs.asp.net/rosherove/archive/2005/04/03/TestNamingStandards.aspx" target="_blank"&gt;post about naming conventions for unit testing&lt;/a&gt; I have to say that it all makes sense to me.&lt;/p&gt; &lt;p&gt;I just want to add that for property testing I use the corresponding method names: &lt;strong&gt;get_&lt;em&gt;Property&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;set_&lt;em&gt;Property&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=1483096" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Testing/default.aspx">Testing</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/UnitTests/default.aspx">UnitTests</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>Naming Convention Violation On The .NET BCL</title><link>http://msmvps.com/blogs/paulomorgado/archive/2007/06/20/naming-convention-violation-on-the-net-bcl.aspx</link><pubDate>Wed, 20 Jun 2007 00:16:00 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:974571</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=974571</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=974571</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2007/06/20/naming-convention-violation-on-the-net-bcl.aspx#comments</comments><description>&lt;p&gt;I wonder who is responsible for &lt;a title="System.Runtime.Serialization.Formatter Fields" href="http://msdn2.microsoft.com/1h3cat6t.aspx" target="_blank"&gt;this&lt;/a&gt;:&lt;/p&gt;
&lt;div class="quote"&gt;
&lt;div style="BORDER-RIGHT:#bcbcbc 1px solid;PADDING-RIGHT:10px;BORDER-TOP:#bcbcbc 1px solid;PADDING-LEFT:10px;BACKGROUND:white;PADDING-BOTTOM:10px;BORDER-LEFT:#bcbcbc 1px solid;COLOR:black;PADDING-TOP:10px;BORDER-BOTTOM:#bcbcbc 1px solid;FONT-FAMILY:consolas, &amp;#39;Courier New&amp;#39;;"&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:blue;"&gt;public&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;class&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;Formatter&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;{&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR:green;"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&lt;span style="COLOR:green;"&gt;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:#2b91af;"&gt;ObjectIDGenerator&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;&lt;font color="#000000"&gt;m_idGenerator;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&lt;/p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR:blue;"&gt;protected&lt;/span&gt; &lt;span style="COLOR:blue;"&gt;&lt;span style="COLOR:#2b91af;"&gt;Formatter&lt;/span&gt;&lt;/span&gt; &lt;span style="COLOR:#2b91af;"&gt;&lt;font color="#000000"&gt;m_objectQueue;&lt;/font&gt;&lt;/span&gt; 
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="COLOR:green;"&gt;// ...&lt;/span&gt;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="MARGIN:0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Can you spot how many naming conventions were violated here?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=974571" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>My Naming Conventions For Localized Concepts In C#</title><link>http://msmvps.com/blogs/paulomorgado/archive/2007/05/25/my-naming-conventions-for-localized-concepts-in-c.aspx</link><pubDate>Thu, 24 May 2007 23:23:20 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:924150</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=924150</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=924150</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2007/05/25/my-naming-conventions-for-localized-concepts-in-c.aspx#comments</comments><description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;I&amp;#39;m Portuguese and most of the software I design and develop is about concepts in Portuguese. How should I name stuff?&lt;/p&gt; &lt;p&gt;If I&amp;#39;m talking about &lt;strong&gt;Conta&lt;/strong&gt; or &lt;strong&gt;Cliente&lt;/strong&gt; it&amp;#39;s easy: &lt;strong&gt;Account&lt;/strong&gt; and&lt;strong&gt;&amp;nbsp;Customer&lt;/strong&gt;. And what about concepts that aren&amp;#39;t in English or for which a translation would be unrecognizable?&lt;/p&gt; &lt;p&gt;When I name stuff I try to make things easily recognizable for those who read it, and this brings us to a combination of both Portuguese and English.&lt;/p&gt; &lt;p&gt;When someone finds in the code or documentation &lt;strong&gt;ContaInválidaException&lt;/strong&gt; (names are in Unicode, it&amp;#39;s time to let go archaic prejudice - &amp;quot;conta invalida&amp;quot; means that the account is making something invalida and &amp;quot;conta inválida&amp;quot; means that the account is invalid) identifies immediately what it is. For a business person it&amp;#39;s obvious that it&amp;#39;s something about an invalid account and for a technology person it&amp;#39;s obvious that it&amp;#39;s&amp;nbsp;some kind of&amp;nbsp;exception.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=924150" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>My C# Naming Conventions For Partial Class Files</title><link>http://msmvps.com/blogs/paulomorgado/archive/2007/05/24/my-c-naming-conventions-for-partial-class-files.aspx</link><pubDate>Wed, 23 May 2007 23:29:32 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:922202</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=922202</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=922202</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2007/05/24/my-c-naming-conventions-for-partial-class-files.aspx#comments</comments><description>&lt;p&gt;Following up on a &lt;a title="Naming Conventions for C#" href="http://msmvps.com/blogs/paulomorgado/archive/2007/05/20/naming-conventions-for-c.aspx" target="_blank"&gt;previous post&lt;/a&gt;, this time I&amp;#39;ll give you my naming conventions for partial class files.&lt;/p&gt; &lt;p&gt;There are two main reasons for me to break a class definition into more than one file. The main one is when I have inner classes and the other is when the file is getting too big.&lt;/p&gt; &lt;p&gt;How should I name the files? The usual tendency is to use a “.” as separator. This looks nice until you came across something like this:&lt;/p&gt; &lt;div class="quote"&gt; &lt;div style="border-right:#bcbcbc 1px solid;padding-right:10px;border-top:#bcbcbc 1px solid;padding-left:10px;background:white;padding-bottom:10px;border-left:#bcbcbc 1px solid;color:black;padding-top:10px;border-bottom:#bcbcbc 1px solid;font-family:consolas, &amp;#39;Courier New&amp;#39;;"&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;public&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;MyComponent&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;{&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Activation&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// Class implementation.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;private&lt;/span&gt; &lt;span style="color:blue;"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af;"&gt;Deployment&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// Class implementation.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #region&lt;/span&gt; Event Handling&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:green;"&gt;// Event handling code.&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&amp;nbsp;&lt;/p&gt; &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #endregion&lt;/span&gt;&lt;/p&gt; &lt;p style="margin:0px;"&gt;}&lt;/p&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;If I would extract the inner classes and use the “.” as separator, I would end up with the following list of files:  &lt;ul style="font-family:consolas, &amp;#39;Courier New&amp;#39;;"&gt; &lt;li&gt;MyComponent.Activation.cs  &lt;li&gt;MyComponent.cs  &lt;li&gt;MyComponent.Deployment.cs&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And, what about the long event handling code? Should I do the same? If so, I will end up with the following list of files:  &lt;ul style="font-family:consolas, &amp;#39;Courier New&amp;#39;;"&gt; &lt;li&gt;MyComponent.Activation.cs  &lt;li&gt;MyComponent.cs  &lt;li&gt;MyComponent.Deployment.cs  &lt;li&gt;MyComponent.EventHandling.cs&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This doesn’t look very nice, does it?  &lt;p&gt;So, here is my proposal:  &lt;ul&gt; &lt;li&gt;“-“ separator for code from the top class  &lt;li&gt;“+” separator for inner classes&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This way, I end up with the following list of files:  &lt;ul style="font-family:consolas, &amp;#39;Courier New&amp;#39;;"&gt; &lt;li&gt;MyComponent.cs  &lt;li&gt;MyComponent-EventHandling.cs  &lt;li&gt;MyComponent+Activation.cs  &lt;li&gt;MyComponent+Deployment.cs&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;And this looks a lot nicer.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=922202" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item><item><title>Naming Conventions for C#</title><link>http://msmvps.com/blogs/paulomorgado/archive/2007/05/20/naming-conventions-for-c.aspx</link><pubDate>Sun, 20 May 2007 22:28:43 GMT</pubDate><guid isPermaLink="false">d67277c4-116b-43f1-b688-e9ef184ea916:915565</guid><dc:creator>Paulo Morgado</dc:creator><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/rsscomments.aspx?PostID=915565</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://msmvps.com/blogs/paulomorgado/commentapi.aspx?PostID=915565</wfw:comment><comments>http://msmvps.com/blogs/paulomorgado/archive/2007/05/20/naming-conventions-for-c.aspx#comments</comments><description>&lt;p&gt;I&amp;#39;m a firm supporter of coding conventions (at least of &lt;strong&gt;my&lt;/strong&gt; coding conventions).&lt;/p&gt; &lt;p&gt;Software factories [&lt;b&gt;&lt;a title="MSDN Solution Architecture Center: Software Factories" href="http://msdn2.microsoft.com/en-us/architecture/aa699360.aspx" target="_blank"&gt;^&lt;/a&gt;&lt;/b&gt;] [&lt;b&gt;&lt;a title="Visual Studio Team System: Software Factories" href="http://msdn.microsoft.com/vstudio/teamsystem/workshop/sf/default.aspx" target="_blank"&gt;^&lt;/a&gt;&lt;/b&gt;] [&lt;b&gt;&lt;a title="patterns &amp;amp; practices: Software Factories" href="http://msdn2.microsoft.com/en-us/practices/bb190362.aspx" target="_blank"&gt;^&lt;/a&gt;&lt;/b&gt;]&amp;nbsp;and other code generation tools have been taking care of writing the tedious (and, sometimes, ugly) code but, at some point, some code must be written and read by human developers. That&amp;#39;s why (in my opinion) the way the code is written is as much important as the language it is written in.&lt;/p&gt; &lt;p&gt;There are several resources about coding conventions for the .NET framework:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="Naming Guidelines" href="http://msdn2.microsoft.com/library/xzf533w0(VS.71).aspx" target="_blank"&gt;Naming Guidelines&lt;/a&gt; - &lt;a title="MSDN Library" href="http://msdn2.microsoft.com/library/" target="_blank"&gt;MSDN Library&lt;/a&gt;.  &lt;li&gt;&lt;a title="Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" href="http://www.awprofessional.com/bookstore/product.asp?isbn=0321246756&amp;amp;rl=1" target="_blank"&gt;Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries&lt;/a&gt; - by &lt;a title="Brad Abrams&amp;#39; Blog" href="http://blogs.msdn.com/brada/" target="_blank"&gt;Brad Abrams&lt;/a&gt;&amp;nbsp;and &lt;a title="Krzysztof Cwalina&amp;#39;s Blog" href="http://blogs.msdn.com/kcwalina/" target="_blank"&gt;Krzysztof Cwalina&lt;/a&gt;.  &lt;li&gt;&lt;a title="The IDesign C# Coding Standard, for development guidelines and best practices" href="http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip" target="_blank"&gt;The IDesign C# Coding Standard, for development guidelines and best practices&lt;/a&gt; - by &lt;a title="About IDesign" href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabid=5&amp;amp;tabindex=3" target="_blank"&gt;Juval Lowy&lt;/a&gt;.  &lt;li&gt;&lt;a title="MSR Technical Education Series: Designing .NET Class Libraries" href="http://www.researchchannel.org/prog/displayevent.aspx?rID=11087&amp;amp;fID=2740" target="_blank"&gt;MSR Technical Education Series: Designing .NET Class Libraries&lt;/a&gt; - by &lt;a title="Krzysztof Cwalina&amp;#39;s Blog" href="http://blogs.msdn.com/kcwalina/" target="_blank"&gt;Krzysztof Cwalina&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I haven&amp;#39;t read &lt;a title="Brad Abrams&amp;#39; Blog" href="http://blogs.msdn.com/brada/" target="_blank"&gt;Brad&lt;/a&gt;&amp;nbsp;and &lt;a title="Krzysztof Cwalina&amp;#39;s Blog" href="http://blogs.msdn.com/kcwalina/" target="_blank"&gt;Krzysztof&lt;/a&gt;&amp;#39;s &lt;a title="Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries" href="http://www.awprofessional.com/bookstore/product.asp?isbn=0321246756&amp;amp;rl=1" target="_blank"&gt;book&lt;/a&gt; (yet), but I&amp;#39;ve read&amp;nbsp;&lt;a title="MSDN Library" href="http://msdn2.microsoft.com/library/" target="_blank"&gt;MSDN Library&lt;/a&gt;&amp;#39;s&amp;nbsp;&lt;a title="Naming Guidelines" href="http://msdn2.microsoft.com/library/xzf533w0(VS.71).aspx" target="_blank"&gt;guidelines&lt;/a&gt; and&amp;nbsp;&lt;a title="About IDesign" href="http://www.idesign.net/idesign/DesktopDefault.aspx?tabid=5&amp;amp;tabindex=3" target="_blank"&gt;Juval&lt;/a&gt;&amp;#39;s &lt;a title="The IDesign C# Coding Standard, for development guidelines and best practices" href="http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip" target="_blank"&gt;document&lt;/a&gt;&amp;nbsp;and watched &lt;a title="Krzysztof Cwalina&amp;#39;s Blog" href="http://blogs.msdn.com/kcwalina/" target="_blank"&gt;Krzysztof&lt;/a&gt;&amp;#39;s &lt;a title="MSR Technical Education Series: Designing .NET Class Libraries" href="http://www.researchchannel.org/prog/displayevent.aspx?rID=11087&amp;amp;fID=2740" target="_blank"&gt;presentation&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I have to disagree with Microsoft&amp;#39;s position about naming conventions of private members. In an&amp;nbsp;enterprise as big as Microsoft projects start and end, people move between teams and every time someone changes team he/she is faced with the possibility of having to learn and adapt to a new set of naming conventions for private members.&lt;/p&gt; &lt;p&gt;IDesign goes one step further on defining naming conventions for private members. I just don&amp;#39;t like the convention they used. What&amp;#39;s the point of prefixing private member fields (not variables as in their document) with &lt;strong&gt;m_&lt;/strong&gt;? What does it mean? Member? If it&amp;#39;s not a local method variable or a method parameter it&amp;#39;s a member.&lt;/p&gt; &lt;p&gt;Some just prefix with &lt;strong&gt;_&lt;/strong&gt;. Once again, why? What does that mean?&lt;/p&gt; &lt;p&gt;The only reason I can find for this prefixing practice is lost in the old days of colorless IDEs, printers and books. With colorful IDEs like Visual Studio 2005 you just need to qualify instance member fields with the &lt;font color="#0000ff"&gt;this&lt;/font&gt; (&lt;font color="#0000ff"&gt;Me&lt;/font&gt; for Visual Basic) keyword and static (Shared in Visual Basic)&amp;nbsp;member fields with (lacking of a &lt;a title="How about a keyword for qualifying static members?" href="http://msmvps.com/blogs/paulomorgado/archive/2007/05/13/how-about-a-keyword-for-qualifying-static-members.aspx" target="_blank"&gt;better solution&lt;/a&gt;) the class name.&lt;/p&gt; &lt;p&gt;Lets pretend for a moment that I&amp;#39;m one of the prefixes. How would I do it?&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;i_camelCase&lt;/strong&gt; for private instance members.  &lt;li&gt;&lt;strong&gt;s_camelCase&lt;/strong&gt; for private static members.  &lt;li&gt;&lt;strong&gt;c_camelCase&lt;/strong&gt; for private constants.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Why stop there? Let&amp;#39;s also prefix method variables:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;v_camelCase&lt;/strong&gt; for method variables.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Now I&amp;#39;m on a roll. Let&amp;#39;s prefix method parameters:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;i_camelCase&lt;/strong&gt; for input parameters.  &lt;li&gt;&lt;strong&gt;o_camelCase&lt;/strong&gt; for output parameters.  &lt;li&gt;&lt;strong&gt;r_camelCase&lt;/strong&gt; for&amp;nbsp;by reference parameters.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The next step would be to go &lt;a title="Hungarian notation" href="http://www.wikipedia.org/wiki/Hungarian_notation" target="_blank"&gt;Hungarian&lt;/a&gt; and add type information to the names, right? No. Let&amp;#39;s stop here and get in the right track.&lt;/p&gt; &lt;h3&gt;My Naming Conventions for C#&lt;/h3&gt; &lt;p&gt;I Find that keeping naming conventions as simple as possible is the best way use and validate them.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Pascal casing&lt;/strong&gt; for any class/struct member (constants, fields, properties, methods, events) except for private fields.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Camel casing&lt;/strong&gt; for private fields and method/property parameters and variables.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Prefix&lt;/strong&gt; interface names with &lt;strong&gt;I&lt;/strong&gt; (&lt;u&gt;I&lt;/u&gt;AccountService).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Prefix&lt;/strong&gt;&amp;nbsp;type parameter&amp;nbsp;names with&amp;nbsp;&lt;strong&gt;T&lt;/strong&gt; (&lt;u&gt;T&lt;/u&gt;Key, &lt;u&gt;T&lt;/u&gt;Value).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Suffix&lt;/strong&gt; type with meaningful names for its purpose (Account&lt;u&gt;Service&lt;/u&gt;, InvalidAccount&lt;u&gt;Exception&lt;/u&gt;, MustVerifyAccount&lt;u&gt;Attribute&lt;/u&gt;, FromAccount&lt;u&gt;TextBox&lt;/u&gt;).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Method names&lt;/strong&gt; must reflect what they are supposed to do. Methods always do something, so they must start with a verb. (&lt;u&gt;Get&lt;/u&gt;AccountInformation, &lt;u&gt;Upload&lt;/u&gt;File)&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Names&lt;/strong&gt; must be descriptive. Abbreviations should not be used. Hungarian notation should not be used. Single name variables should not be used.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Language&lt;/strong&gt; keywords should be used instead of type names (string instead of System.String, int instead of System.Int32, etc.).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Business&lt;/strong&gt; relatad names should reflect business entities or actions, and in the business&amp;#39; language (Get&lt;u&gt;Conta&lt;/u&gt;FromDataBase, &lt;u&gt;ContaInválida&lt;/u&gt;Exception, &lt;u&gt;ValidarConta&lt;/u&gt;Attribute).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Underscores&lt;/strong&gt; should not be used. Camel casing should be used to separate words.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Acronyms&lt;/strong&gt; should be treated as a single word. Just to be compliant with Microsoft, for acronyms with less than three letters, all letters should be upper case.&lt;/li&gt;&lt;/ol&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://msmvps.com/aggbug.aspx?PostID=915565" width="1" height="1"&gt;</description><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/.NET/default.aspx">.NET</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Community/default.aspx">Community</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/SoftDev/default.aspx">SoftDev</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MSDN/default.aspx">MSDN</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/MVP/default.aspx">MVP</category><category domain="http://msmvps.com/blogs/paulomorgado/archive/tags/CodingConventions/default.aspx">CodingConventions</category></item></channel></rss>