<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://codebetter.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Patrick Smacchia [MVP C#]</title><subtitle type="html" /><id>http://codebetter.com/blogs/patricksmacchia/atom.aspx</id><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/patricksmacchia/default.aspx" /><link rel="self" type="application/atom+xml" href="http://codebetter.com/blogs/patricksmacchia/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20416.853">Community Server</generator><updated>2008-02-22T18:16:00Z</updated><entry><title>Write Active Conventions on your Code Base</title><link rel="alternate" type="text/html" href="http://codebetter.com/blogs/patricksmacchia/archive/2008/05/11/write-active-conventions-on-your-code-base.aspx" /><id>http://codebetter.com/blogs/patricksmacchia/archive/2008/05/11/write-active-conventions-on-your-code-base.aspx</id><published>2008-05-11T20:10:00Z</published><updated>2008-05-11T20:10:00Z</updated><content type="html">&lt;p class="MsoNormal"&gt;&lt;span&gt;Recently,
both &lt;a href="http://codebetter.com/blogs/glenn.block/archive/2008/05/04/prismshouldnotreferenceunity.aspx" target="_blank"&gt;Glenn Block&lt;/a&gt;&lt;/span&gt;&lt;span&gt; &lt;span&gt;and &lt;a href="http://www.ayende.com/Blog/archive/2008/05/05/Actively-enforce-your-conventions.aspx" target="_blank"&gt;Ayende&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.ayende.com/Blog/archive/2008/05/05/Actively-enforce-your-conventions.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;wrote &lt;span&gt;about how to define
some sort of &lt;b&gt;active conventions about
the code base&lt;/b&gt;. The idea is great! The proposed implementation is based on the
framework &lt;b&gt;System.Reflection&lt;/b&gt; used from
some unit tests to assert some properties on some elements of the code base. Not
taking account the problems encountered with Reflection&lt;/span&gt;&lt;/span&gt;&lt;span&gt;, this approach suffers the same
problem than writing custom rules for &lt;b&gt;FxCop: &lt;/b&gt;there is a lot of noise/friction and it
takes dozens of minutes just to write a single convention and make sure it is
working correctly.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The
language &lt;a href="http://www.ndepend.com/Features.aspx#CQL" target="_blank"&gt;&lt;b&gt;Code Query Language&lt;/b&gt;&lt;/a&gt;&lt;a href="http://www.ndepend.com/Features.aspx#CQL" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;
supported by &lt;a href="http://www.NDepend.com" target="_blank"&gt;&lt;b&gt;NDepend&lt;/b&gt;&amp;nbsp;&lt;/a&gt;&lt;a href="http://www.NDepend.com" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;has
been especially designed to write active &lt;i&gt;conventions
/ rules/ constraints&lt;/i&gt; in a frictionless way. The purpose of this post is to enumerate
popular active code conventions written with CQL. These conventions are related
to a rich set of area including: Dependencies, Structure, Quality,
Metrics, Evolution, Diff / Changes, Coverage, Purity / Side-Effects /
Immutability, Encapsulation, Call Graph, Separation of Concerns,
Componentization, Layering, Coupling / Dead / Unused Code, Naming Conventions…&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Dependencies / Structure&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;As the name
&lt;i&gt;NDepend&lt;/i&gt; suggests, dependencies is a
major concern of the tool. CQL lets write all sorts of conventions about
which part of the code is allowed to use or not which other part. Suppose you
are in charge of writing conventions on &lt;b&gt;mscorlib&lt;/b&gt;
and you don’t want that the namespace &lt;b&gt;Microsoft.Win32&lt;/b&gt;
uses the namespace &lt;b&gt;System.Collections&lt;/b&gt;.
You just have to write the CQL rule:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NAMESPACES&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsing&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;System.Collections.Generic&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Microsoft.Win32&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;I hope that
the syntax is slick and concise enough to not require any additional comments.
The &lt;i&gt;VisualNDepend&lt;/i&gt; UI lets generate such a rule directly from the &lt;i&gt;Dependencies
Structure Matrix&lt;/i&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/CQLConventions_Dependencies.png"&gt;&lt;span&gt;&lt;img src="http://codebetter.com/blogs/patricksmacchia/CQLConventions_Dependencies.png" alt="" /&gt;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;From there,
you can write any constraints you can imagine in order to restrict (and thus
control) the evolution of the structure of your code base. For example the
following constraint warns if the assembly &lt;b&gt;Asm1&lt;/b&gt;
uses something else from the assembly &lt;b&gt;Asm2&lt;/b&gt;
than the class &lt;b&gt;MyNamespace.Foo&lt;/b&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES FROM ASSEMBLIES &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Asm2&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsedBy&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;Asm1&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;MyNamespace.Foo&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;…and the
following rules warns if the class &lt;b&gt;MyNamespace.Foo&lt;/b&gt;
is used by a namespace which name doesn’t satisfy the regex ‘&lt;i&gt;begin with &lt;b&gt;MyNamespace.Internal&lt;/b&gt;&lt;/i&gt;’:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NAMESPACES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyUsing&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;MyNamespace.Foo&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameLike&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;^MyNamespace.Internal&amp;quot;&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;IsDirectlyUsing&lt;/i&gt;, &lt;i&gt;IsDirectlyUsedBy&lt;/i&gt;, &lt;i&gt;NameIs&lt;/i&gt;, &lt;i&gt;FullNameIs&lt;/i&gt;, &lt;i&gt;NameLike&lt;/i&gt;, &lt;i&gt;FullNameLike&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/11/26/keep-your-code-structure-clean.aspx" target="_blank"&gt;Keep your code structure clean&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/11/26/keep-your-code-structure-clean.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Quality / Metrics&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL comes
with support for 80 code metrics + numerous facilities in &lt;i&gt;VisualNDepend&lt;/i&gt; to dig into abnormal values. Suppose that you don’t
want that a method have more than 25 &lt;a href="http://www.ndepend.com/Metrics.aspx#NbLinesOfCode" target="_blank"&gt;lines of code&lt;/a&gt;&lt;/span&gt;&lt;span&gt; except if it is a &lt;i&gt;Windows Form&lt;/i&gt; &lt;b&gt;InitializeComponent()&lt;/b&gt; generated method:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NbLinesOfCode &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;25&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!NameIs&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;InitializeComponent()&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Amongst
popular quality metrics supported by &lt;i&gt;NDepend&lt;/i&gt; let&amp;#39;s quote: &lt;a href="http://www.ndepend.com/Metrics.aspx#PercentageComment" target="_blank"&gt;&lt;i&gt;PercentageComment&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#CC" target="_blank"&gt;&lt;i&gt;CyclomaticComplexity&lt;/i&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#CC"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;(computed from code source or &lt;a href="http://www.ndepend.com/Metrics.aspx#ILCC" target="_blank"&gt;IL&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#ILCC"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;),&lt;span&gt;&amp;nbsp;
&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#ILNestingDepth" target="_blank"&gt;&lt;i&gt;IL Nesting Depth&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#SizeOfInst" target="_blank"&gt;&lt;i&gt;Size of Instance&lt;/i&gt;&lt;/a&gt;&lt;/span&gt;&lt;span&gt;, &lt;a href="http://www.ndepend.com/Metrics.aspx#NamespaceCe" target="_blank"&gt;&lt;i&gt;Efferent Coupling&lt;/i&gt;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx#NamespaceCe"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;…&lt;span&gt;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;The
exhaustive description of all metrics is available &lt;a href="http://www.ndepend.com/Metrics.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;a href="http://www.ndepend.com/Metrics.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Evolution / Changes&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL can be
used to rule the diff between any 2 snapshots of a code base taken at
different points in time. In other words, one can continuously control the evolution of the
code. Suppose you want to avoid breaking changes such as a public
method in the older snapshot that doesn’t exist anymore in the newer snapshot:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;VisibilityWasChanged &lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasRemoved&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on API
breaking changes rules here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx" target="_blank"&gt;Avoid API breaking changes&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/20/avoid-api-breaking-changes.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Mixing CQL code
changes conditions and other CQL conditions is a smart way to write rules that
should be applied only from a particular milestone. Suppose that from today,
all method refactored or added should have a cyclomatic complexity lower than
8:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CyclomaticComplexity &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;8&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;CodeWasChanged &lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasAdded&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this possibility here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx" target="_blank"&gt;Ensure the quality of the code that will be developed
this year&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/01/01/ensure-the-quality-of-the-code-that-will-be-developed-this-year.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;WasAdded&lt;/i&gt;, &lt;i&gt;WasRemoved&lt;/i&gt;, &lt;i&gt;CodeWasChanged&lt;/i&gt;, &lt;i&gt;CommentsWereChanged&lt;/i&gt;,
&lt;i&gt;VisibilityWasChanged&lt;/i&gt;, &lt;i&gt;WasChanged&lt;/i&gt;, &lt;i&gt;BecameObsolete&lt;/i&gt;, &lt;i&gt;IsUsedRecently&lt;/i&gt;,
&lt;i&gt;IsNotUsedAnymore&lt;/i&gt;, &lt;i&gt;IsUsedDifferently&lt;/i&gt;, &lt;i&gt;IsInNewerBuild&lt;/i&gt;, &lt;i&gt;IsInOlderBuild&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Code Coverage by Tests&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;span&gt;NDepend&lt;/span&gt;&lt;/i&gt;&lt;span&gt; can import code coverage metrics computed from
&lt;a href="http://www.ncover.com/" target="_blank"&gt;&lt;b&gt;NCover&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.ncover.com/"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; and &lt;a href="http://msdn.microsoft.com/fr-fr/teamsystem/default.aspx" target="_blank"&gt;&lt;b&gt;Microsoft Visual Studio Team System&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://msdn.microsoft.com/fr-fr/teamsystem/default.aspx" target="_blank"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;. For example you can define an
attribute on types &lt;b&gt;YourNamespace.FullCoveredAttribute&lt;/b&gt;
and make sure that all types tagged with this attribute are and will remain
100% covered:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;PercentageCoverage &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;100&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.FullCoveredAttribute&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;You might
also want to make sure that code that was added or refactored since the last
released is 100% covered (a popular agile practice that so far, cannot be strictly
applied without CQL):&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;PercentageCoverage &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;lt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;100&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;(&lt;span&gt;CodeWasChanged
&lt;/span&gt;&lt;span style="color:blue;"&gt;OR &lt;/span&gt;&lt;span&gt;WasAdded&lt;/span&gt;)&lt;span style="color:black;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx" target="_blank"&gt;Make the most of your test coverage data&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;PercentageCoverage&lt;/i&gt;, &lt;i&gt;PercentageBranchCoverage&lt;/i&gt;, &lt;i&gt;NbLinesOfCodeCovered&lt;/i&gt;, &lt;i&gt;NbLinesOfCodeNotCovered&lt;/i&gt;, &lt;i&gt;IsExcludedFromCoverage&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Purity / Side-Effects /
Immutability&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;One hot .NET
language topics actually is purity, meaning how / why / when states are changing at run-time. When states remain constants, there are no more side-effects and
as a result you can assert numerous cool things on your program, such as no
corrupted state in a multi-threaded environment. CQL lets write some conventions about the mutability. For example you can define an attribute on types &lt;b&gt;YourNamespace.ImmutableAttribute&lt;/b&gt; and
make sure that all types tagged with this attribute are immutable, meaning the
state of their instance objects won’t changed once created:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; !&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsImmutable &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.ImmutableAttribute&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;In the same
spirit, you might want to enforce that some methods are pure:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; (&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;ChangesObjectState &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;OR&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;ChangesTypeState&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;)&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;span style="color:blue;"&gt;AND&lt;/span&gt;&lt;span style="color:black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;HasAttribute&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.PureAttribute&amp;quot;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;…or that all structure are immutable:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TYPES &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; !&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsImmutable &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsStructure&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;You can
also restrict write access to a particular field to certain methods:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsDirectlyWritingField&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.m_Field&amp;quot; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;FullNameIs &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.Method1()&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;FullNameIs &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;YourNamespace.YourClass.set_Field(Int32)&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx" target="_blank"&gt;Immutable Types:&lt;span&gt;&amp;nbsp; &lt;/span&gt;understand
their benefits and use them&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/04/09/make-the-most-of-your-test-coverage-data.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions: &lt;i&gt;ChangesObjectState&lt;/i&gt;, &lt;i&gt;ChangesTypeState&lt;/i&gt;, &lt;i&gt;IsImmutable&lt;/i&gt;, &lt;i&gt;IsWritingField&lt;/i&gt;,
&lt;i&gt;DepthOfIsWritingField&lt;/i&gt;, &lt;i&gt;IsDirectlyWritingField&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Optimal Encapsulation&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;CQL comes
with several conditions especially designed to pinpoint code elements not optimally
encapsulated, such as an internal methods that could be declared private without any compilation break:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS &lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsInternal &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;CouldBePrivate&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx" target="_blank"&gt;Optimal Encapsulation&lt;/a&gt;&lt;span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx" target="_blank"&gt;&amp;nbsp;&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2007/10/31/optimal-encapsulation.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;i&gt;CouldBeInternal&lt;/i&gt;, &lt;i&gt;CoulBeInternalProtected&lt;/i&gt;,&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;i&gt;CouldBeProtected&lt;/i&gt;,
&lt;i&gt;CouldBePrivate&lt;/i&gt;, &lt;i&gt;ShouldBePublic&lt;/i&gt;, &lt;i&gt;IsPublic&lt;/i&gt;,
&lt;i&gt;IsInternal&lt;/i&gt;, &lt;i&gt;IsProtected&lt;/i&gt;, &lt;i&gt;IsPrivate&lt;/i&gt;, &lt;i&gt;IsInternalAndProtected&lt;/i&gt;, &lt;i&gt;IsInternalOrProtected&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Coupling / Dead / Unused Code&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;With a bit
of astute, it is easy to write rules that detects &lt;i&gt;potentially&lt;/i&gt; dead code, i.e code that is not used anymore and that can
be safely removed. The word &lt;i&gt;potentially&lt;/i&gt; is used
here because a static analysis tool cannot mathematically detect the exact set of dead code
elements. The idea is to detect code elements with no afferent coupling,
meaning, not used anywhere in the code. We rely on the fact that the value of the metric &lt;i&gt;Ca&lt;/i&gt; (&lt;a href="http://www.ndepend.com/Metrics.aspx#MethodCa" target="_blank"&gt;Afferent Coupling&lt;/a&gt;) is equal to 0 in
such case. For example, to warn if some methods are potentially not used:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;TOP&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;10&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;METHODS&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;MethodCa&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; == &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;// Ca=0 -&amp;gt; No Afferent Coupling -&amp;gt; The
method is &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// not used in
the context of this application.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsPublic&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;// Public methods might be used by client &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// applications
of your assemblies.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsEntryPoint&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;// Main() method is not used by-design.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsExplicitInterfaceImpl&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;// The IL code never explicitely
calls &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;// explicit
interface methods implementation.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsClassConstructor&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;// The IL code never explicitely calls class ctors.&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;!&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsFinalizer&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/span&gt;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:8pt;font-family:&amp;#39;Courier New&amp;#39;;color:green;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;//
The IL code never explicitely calls finalizers.&lt;/span&gt;&lt;span style="font-size:8pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;More on
this here: &lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code-metrics-on-coupling-dead-code-design-flaws-and-re-engineering.aspx" target="_blank"&gt;Code metrics on Coupling, Dead Code, Design Flaws and Re-engineering&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;a href="http://codebetter.com/blogs/patricksmacchia/archive/2008/02/15/code-metrics-on-coupling-dead-code-design-flaws-and-re-engineering.aspx"&gt;&lt;span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Related CQL
conditions:&lt;span&gt;&amp;nbsp; &lt;/span&gt;&lt;i&gt;NamespaceCa&lt;/i&gt;, &lt;i&gt;MethodCa&lt;/i&gt;, &lt;i&gt;TypeCa&lt;/i&gt;, &lt;i&gt;FieldCa&lt;/i&gt;…&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size:16pt;"&gt;Naming Conventions&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Because CQL
supports regex validation, it is easy to write any naming convention such as:
all static fields names should begin with &lt;i&gt;s_&lt;/i&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;SELECT&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WHERE&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; !&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;NameLike&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;&amp;quot;^s_&amp;quot;&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;AND&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IsStatic&lt;/span&gt;&lt;span style="font-size:9pt;"&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;Or all
exception classes should end up with &lt;i&gt;Exception&lt;/i&gt;:&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;WARN&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;IF&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;Count&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &amp;gt; &lt;/span&gt;&lt;span style="background:yellow none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt;0&lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:black;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-background-inline-policy:-moz-initial;"&gt; &lt;/span&gt;&lt;span style="background:white none repeat scroll 0% 50%;font-size:9pt;font-family:&amp;#39;Courier New&amp;#39;;color:blue;-moz-background-clip:-moz-initial;-moz-background-origin:-moz-initial;-moz-back