<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Design Guidelines</title>
        <link>http://www.coding4art.com/category/17.aspx</link>
        <description>Design Guidelines</description>
        <language>en-US</language>
        <copyright>Maurizio</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>NDepend, a &amp;ldquo;must have&amp;rdquo; tool</title>
            <link>http://www.coding4art.com/archive/2010/07/20/ndepend-a-ldquomust-haverdquo-tool.aspx</link>
            <description>&lt;p&gt;Questo è un &lt;a href="http://www.ndepend.com"&gt;tool&lt;/a&gt; davvero impressionante per cosa riesce a tirar fuori da un assembly .Net, adesso con tanto di add-in per Visual Studio e per Reflector.&lt;/p&gt;  &lt;p&gt;E’ un must per qualsiasi sviluppatore/architetto degno di questo nome.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/171.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2010/07/20/ndepend-a-ldquomust-haverdquo-tool.aspx</guid>
            <pubDate>Tue, 20 Jul 2010 15:03:05 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/171.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2010/07/20/ndepend-a-ldquomust-haverdquo-tool.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/171.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/171.aspx</trackback:ping>
        </item>
        <item>
            <title>Link utili della settimana #8</title>
            <link>http://www.coding4art.com/archive/2010/07/16/link-utili-della-settimana-8.aspx</link>
            <description>&lt;p&gt;- &lt;a href="http://www.wintellect.com/CS/blogs/jrobbins/archive/2010/07/08/super-cool-msbuild-debugging-in-the-vs-ide.aspx"&gt;Super cool MSBuild Debugging in Visual Studio IDE&lt;/a&gt;     &lt;br /&gt;Questa è una feature eccezionale non ufficialmente supportata. Seguendo il link è possibile scoprire i passi necessari per abilitarla in Visual Studio 2010. &lt;/p&gt;  &lt;p&gt;- &lt;a href="http://blogs.msdn.com/b/jasonz/archive/2010/07/08/good-news-for-vb6-migration.aspx"&gt;Tool di migrazione VB6 –&amp;gt; VB .NET / C# gratuito&lt;/a&gt;     &lt;br /&gt;Considerato che è gratuito e che promette bene vale sicuramente la pena provarlo. &lt;/p&gt;  &lt;p /&gt;  &lt;p /&gt;  &lt;p&gt;- &lt;a href="http://community.visual-basic.it/greg/archive/2010/07/02/30353.aspx"&gt;Visual Studio 2010 Dark background&lt;/a&gt;     &lt;br /&gt;Add-in per VS 2010 per impostare dei temi personalizzati circa i colori, tra cui un fantastico Dark&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=4e094902-aeff-4ee2-a12d-5881d4b0dd3e&amp;amp;displaylang=en"&gt;Microsoft ADO .NET Entity Framework Feature CTP4&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Domain Driven Design di Alberto Brandolini  &lt;a href="http://www2.mokabyte.it/cms/article.run?articleId=R8V-6BG-GH7-T74_7f000001_10911033_83624e86"&gt;Part 1&lt;/a&gt;; &lt;a href="http://www2.mokabyte.it/cms/article.run?articleId=61K-V5Y-5UQ-2LJ_7f000001_10911033_27879a51"&gt;Part 2&lt;/a&gt;; &lt;a href="http://www2.mokabyte.it/cms/article.run?articleId=T2K-Y36-YLJ-37E_7f000001_10911033_6b51c675"&gt;Part 3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://martinfowler.com/eaaCatalog/domainModel.html"&gt;Domain Model Pattern (Martin Fowler)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://syrinxmenu.codeplex.com/releases/view/48971"&gt;ASP.NET Multi-Level Drop Down Menu – JQuery&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- &lt;a href="http://nunitresultmanager.codeplex.com/"&gt;NUnit Result Manager&lt;/a&gt;     &lt;br /&gt;Web application per tener traccia dei risultati degli unit tests (per project manager &amp;amp; developer)&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/167.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2010/07/16/link-utili-della-settimana-8.aspx</guid>
            <pubDate>Fri, 16 Jul 2010 14:45:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/167.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2010/07/16/link-utili-della-settimana-8.aspx#feedback</comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/167.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/167.aspx</trackback:ping>
        </item>
        <item>
            <title>Uso delle parentesi graffe</title>
            <link>http://www.coding4art.com/archive/2010/07/13/uso-delle-parentesi-graffe.aspx</link>
            <description>&lt;p&gt;Sono sempre stato piuttosto "maniacale" nella scrittura di codice, circa il rispetto delle guidelines e circa uno stile di codifica che aiuti a migliorare la leggibilità dello stesso, e la sua manutenibilità.&lt;/p&gt;  &lt;p&gt;Ho sempre sostenuto che il pezzo di codice scritto stilisticamente bene è quello che si "autodocumenta" semplicemente solo leggendolo. &lt;/p&gt;  &lt;p&gt;La leggibilità aumenta, a mio parere, anche con opportuni accorgimenti o tecniche, non sempre utilizzati da tutti, anzi spesso ci sono pareri discordanti sull'effettiva utilità di alcune modalità di scrittura. &lt;/p&gt;  &lt;p&gt;Mi riferisco, ad esempio, all'utilizzo delle parentesi graffe in alcuni casi particolari dove possono essere evitate (ovviamente il contesto è quello di applicazione scritta in C#, linguaggio principe nel mondo .Net).&lt;/p&gt;  &lt;p&gt;A mio avviso, la leggibilità beneficia del fatto di scrivere qualcosa del genere:&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 96.39%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; height: 42px; max-height: 200px; font-size: 8pt; overflow: visible; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100.64%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; height: 44px; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (condizione)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     a = 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;rispetto a questo codice:&lt;/p&gt;

&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: visible; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;
    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum1"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (condizione)&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum2"&gt;   2:&lt;/span&gt;     {&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum3"&gt;   3:&lt;/span&gt;         a = 1;&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #606060" id="lnum4"&gt;   4:&lt;/span&gt;     }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Quando mi ritrovo a svolgere code review oppure solo a guardare codice scritto da altri, la tentazione di eliminare le graffe è troppo forte, e, quando posso, finisco per toglierle.&lt;/p&gt;

&lt;p&gt;La stessa tecnica la applico al &lt;em&gt;ciclo for&lt;/em&gt;, ovviamente anche in questo caso l’istruzione da eseguire deve essere una sola.&lt;/p&gt;

&lt;p&gt;Circa le if, sarebbe addirittura più valida l'idea di toglierle proprio, in perfetta aderenza ai principi della campagna &lt;a href="http://www.antiifcampaign.com/"&gt;anti-if&lt;/a&gt;, a cui ho aderito con entusiasmo, anche se qui il contesto è differente poichè le "if" andrebbero usate con parsimonia o evitate del tutto quando particolarmente annidate e ripeture (così come l'istruzione "switch"),  sostituendole con una applicazione più rigorosa dei principi della programmazione ad oggetti, polimorfismo ed ereditarietà in primis.&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/165.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2010/07/13/uso-delle-parentesi-graffe.aspx</guid>
            <pubDate>Tue, 13 Jul 2010 09:15:00 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/165.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2010/07/13/uso-delle-parentesi-graffe.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/165.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/165.aspx</trackback:ping>
        </item>
        <item>
            <title>Rilevare codice duplicato</title>
            <link>http://www.coding4art.com/archive/2009/03/06/rilevare-codice-duplicato.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://clonedetectivevs.codeplex.com/" target="_blank"&gt;Clone Detective for Visual Studio&lt;/a&gt; è una integrazione dell'ambiente Visual Studio (completamente free) in gradi di rilevare porzioni di codice duplicato tra i vari progetti che compongono una solution. Il fine è ambizioso, poichè come dice la stessa presentazione del prodotto presente su &lt;a href="http://www.codeplex.com/" target="_blank"&gt;CodePlex&lt;/a&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;"Having duplicates can easily lead to inconsistencies and often is an indicator for poorly factored code"&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Un componente del genere può davvero essere utilissimo, anche oltre lo scopo che si prefigge. Ad esempio, conoscendo accuratamente il numero di cloni presenti all'interno di un software con parecchie linee di codice, è possibile valutarne il costo di manutenzione, ovvero il costo a cui si va incontro se si decidesse di apportarvi delle modifiche. &lt;/p&gt;&lt;p&gt;Il componente si basa su &lt;a href="http://conqat.cs.tum.edu/index.php/What_is_ConQAT%3F" target="_blank"&gt;ConQAT&lt;/a&gt; (Continuous Quality Assessment Toolkit) per rilevare le parti di codice duplicato. Questo toolkit fornisce una serie di tools e linee guida per il controllo della qualità del software&lt;/p&gt;&lt;img src="http://www.coding4art.com/aggbug/105.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>maurizio</dc:creator>
            <guid>http://www.coding4art.com/archive/2009/03/06/rilevare-codice-duplicato.aspx</guid>
            <pubDate>Thu, 05 Mar 2009 23:56:52 GMT</pubDate>
            <wfw:comment>http://www.coding4art.com/comments/105.aspx</wfw:comment>
            <comments>http://www.coding4art.com/archive/2009/03/06/rilevare-codice-duplicato.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.coding4art.com/comments/commentRss/105.aspx</wfw:commentRss>
            <trackback:ping>http://www.coding4art.com/services/trackbacks/105.aspx</trackback:ping>
        </item>
    </channel>
</rss>