<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PHPBlog.it &#187; refactoring</title>
	<atom:link href="http://phpblog.it/tag/refactoring/feed/" rel="self" type="application/rss+xml" />
	<link>http://phpblog.it</link>
	<description>Solo un altro blog targato WordPress</description>
	<lastBuildDate>Mon, 21 May 2012 21:45:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Pro PHP Refactoring, il webinar</title>
		<link>http://phpblog.it/2010/11/17/pro-php-refactoring-il-webinar/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pro-php-refactoring-il-webinar</link>
		<comments>http://phpblog.it/2010/11/17/pro-php-refactoring-il-webinar/#comments</comments>
		<pubDate>Wed, 17 Nov 2010 18:08:38 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[ideato]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[webinar]]></category>
		<category><![CDATA[zend]]></category>

		<guid isPermaLink="false">http://phpblog.it/?p=370</guid>
		<description><![CDATA[Il prossimo 6 dicembre, Ideato in collaborazione con Zend presenteranno un webinar gratuito dedicato al refactoring di codice PHP. Si parlerà di come realizzare il refactoring di codice PHP e di alcune metodologie di ingegneria del software da seguire per non perdersi nei meandri del codice.<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2010/11/17/pro-php-refactoring-il-webinar/' addthis:title='Pro PHP Refactoring, il webinar '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Il prossimo 6 dicembre, <strong><a title="Ideato" href="http://www.ideato.it/Blog/In-primo-piano/Pro-PHP-Refactoring-il-webinar" target="_blank">Ideato</a></strong> in collaborazione con <strong><a title="Zend" href="http://www.zend.com/it/company/news/event/webinar-pro-php-refactoring" target="_blank">Zend</a></strong> presenteranno un <strong>webinar gratuito</strong> dedicato al <strong>refactoring di codice PHP</strong>. Si parlerà di come realizzare il refactoring di codice PHP e di alcune  metodologie di ingegneria del software da seguire per non perdersi nei  meandri del codice.</p>
<blockquote><p>Sono sempre più numerose le applicazioni legacy aziendali che sono  diventate  difficili da manutenere e da estendere. La riscrittura  completa di  un&#8217;applicazione non è quasi mai l&#8217;approccio corretto da  seguire, soprattutto dal  punto di vista business. In questo webinar si  parlerà di come realizzare il  refactoring di codice PHP e di alcune  metodologie di ingegneria del software da  seguire per non perdersi nei  meandri del codice. Dal punto di vista degli  strumenti da utilizzare si  parlerà di PHPUnit e Selenium, per il testing  automatico del codice  PHP, e di Zend Studio, l&#8217;IDE di Zend Technologies per  facilitare il  refactoring e la gestione del codice PHP.</p></blockquote>
<p>Presentano: Francesco Trucchia,  CTO di Ideato srl, Solution Partner di Zend Technologies e Enrico  Zimuel, Senior Consultant &amp; Architect, Zend Technologies. Un appuntamento da non perdere!</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2010/11/17/pro-php-refactoring-il-webinar/' addthis:title='Pro PHP Refactoring, il webinar '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2010/11/17/pro-php-refactoring-il-webinar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduzione al refactoring</title>
		<link>http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introduzione-al-refactoring-in-php</link>
		<comments>http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 09:47:55 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[dalla rete]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[leggibilità]]></category>
		<category><![CDATA[manutenzione]]></category>
		<category><![CDATA[refactoring]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/</guid>
		<description><![CDATA[Segnalo un&#8217;interessante serie che sta per iniziare sul blog di Sameer Borate, uno sviluppatore PHP freelance, che parlerà di un tema importante: il refactoring del codice. Quando si parla di refactoring si deve pensare subito a quel processo di modifica in termini di leggibilità e chiarezza strutturale che non vanno ad intaccare quelle che sono [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/' addthis:title='Introduzione al refactoring '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Segnalo un&#8217;<a href="http://www.codediesel.com/refactoring/introduction-to-refactoring-in-php/" title="interessante serie che sta per iniziare sul blog di Sameer Borate">interessante serie che sta per iniziare sul blog di Sameer Borate</a>, uno sviluppatore PHP freelance, che parlerà di un tema importante: il <strong>refactoring del codice</strong>. Quando si parla di refactoring si deve pensare subito a quel processo di modifica in termini di leggibilità e chiarezza strutturale che non vanno ad intaccare quelle che sono le funzionalità offerte dalla porzione di codice in esame. I risultati prodotti per lo stesso input saranno gli stessi prima e dopo il refactoring, <strong>la leggibilità del codice e la sua manutenibilità</strong> ci si augura che ne avranno tratto giovamento. In questo modo ritornando sul codice a distanza di mesi, o dovendo farlo fare ad altri, il compito non sarà così doloroso come un tempo&#8230;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/' addthis:title='Introduzione al refactoring '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/12/29/introduzione-al-refactoring-in-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Call the expert: A refactoring story</title>
		<link>http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=call-the-expert-a-refactoring-story</link>
		<comments>http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 05:00:02 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[framework]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[call the expert]]></category>
		<category><![CDATA[fabien potencier]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/</guid>
		<description><![CDATA[Si intitola così una breve serie di post realizzati da Fabien Potencier e pubblicati sul blog di symfony a seguito di una richiesta di &#8220;aiuto&#8221; pervenutagli da un esperto sviluppatore PHP alle prese con il suo primo progetto con il framework symfony. Fabien (il papà di symfony) ha invitato lo sviluppatore a presentarsi da SensioLabs [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/' addthis:title='Call the expert: A refactoring story '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p>Si intitola così una <strong>breve serie di post realizzati da Fabien Potencier</strong> e pubblicati sul <a href="http://www.symfony-project.org/blog/" title="blog di symfony">blog di symfony</a> a seguito di una richiesta di &#8220;aiuto&#8221; pervenutagli da un esperto sviluppatore PHP alle prese con il suo primo progetto con il <a href="http://www.symfony-project.org/blog/" title="framework symfony">framework symfony</a>. Fabien (il papà di symfony) ha invitato lo sviluppatore a presentarsi da SensioLabs per una <strong>sessione di refactoring</strong> e visto che gli errori commessi gli sono parsi comuni ha deciso di pubblicare una serie di 5 puntate in cui ha analizzato i problemi principali fornendone le soluzioni e le motivazioni.</p>
<p>La <a href="http://www.symfony-project.org/doc/1_1/" title="documentazione di symfony">documentazione di symfony</a> è già molto completa (tra le migliori indubbiamente) e l&#8217;esperienza dello sviluppatore è una componente aggiuntiva fondamentale per la buona riuscita di un progetto. Tuttavia <strong>poter vedere analizzati problemi comuni da chi un framework l&#8217;ha ideato e sviluppato non ha prezzo</strong> e permette di abituarsi a lavorare con metodo rispettando delle best-practice sicure.</p>
<p>Qui l&#8217;accesso diretto alle cinque puntate:</p>
<ul>
<li><a href="http://www.symfony-project.org/blog/2008/09/18/call-the-expert-a-refactoring-story-part-1-5" title="Parte 1">Parte 1</a></li>
<li><a href="http://www.symfony-project.org/blog/2008/09/19/call-the-expert-a-refactoring-story-part-2-5" title="Parte 2">Parte 2</a></li>
<li><a href="http://www.symfony-project.org/blog/2008/09/20/call-the-expert-a-refactoring-story-part-3-5" title="Parte 3">Parte 3</a></li>
<li><a href="http://www.symfony-project.org/blog/2008/09/21/call-the-expert-a-refactoring-story-part-4-5" title="Parte 4">Parte 4</a></li>
<li><a href="http://www.symfony-project.org/blog/2008/09/22/call-the-expert-a-refactoring-story-part-5-5" title="Parte 5 ">Parte 5 </a></li>
</ul>
<p><strong>E voi studiate il codice altrui per migliorarvi? Io lo faccio e mi diverto parecchio.</strong></p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/' addthis:title='Call the expert: A refactoring story '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/10/01/call-the-expert-a-refactoring-story/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refactoring: migliorare la struttura del codice</title>
		<link>http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=refactoring-migliorare-la-struttura-del-codice</link>
		<comments>http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/#comments</comments>
		<pubDate>Mon, 19 May 2008 06:00:24 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[phpblog]]></category>
		<category><![CDATA[programmazione]]></category>
		<category><![CDATA[code design]]></category>
		<category><![CDATA[martin fowler]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[unit test]]></category>

		<guid isPermaLink="false">http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/</guid>
		<description><![CDATA[Il refactoring è una pratica di sviluppo, il cui scopo fondamentale è di migliorare la struttura del codice, per favorire il riutilizzo di porzioni di esso, per migliorarne la leggibilità e prepararne l&#8217;evoluzione. Il principio fondamentale sul quale si basa il refactoring, è riassunto molto bene dalla definizione che ne da Martin Fowler, primo fra [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/' addthis:title='Refactoring: migliorare la struttura del codice '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<p><img src="http://172.18.0.13/wordpress/wp-content/uploads/2008/05/369500852_25a2c45a69_m.jpg" alt="migliorare la struttura del codice" />Il refactoring è una pratica di sviluppo, il cui scopo fondamentale è di migliorare la struttura del codice, per favorire il riutilizzo di porzioni di esso, per migliorarne la leggibilità e prepararne l&#8217;evoluzione. Il principio fondamentale sul quale si basa il refactoring, è riassunto molto bene dalla definizione che ne da Martin Fowler, primo fra tutti a teorizzare tale pratica: <em>Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior</em>. In altre parole: il refactoring rappresenta la necessità di modificare una porzione di codice, possibilmente di dimensioni limitate, senza alterare il compito che essa svolge e quindi senza alterarne il risultato.</p>
<p><span id="more-97"></span></p>
<p>Quando si scrivono applicazioni e programmi in genere <strong>si cerca di partire sempre con il piede giusto</strong> prestando particolare attenzione alla struttura del codice per avere sorgenti &#8220;puliti&#8221; e facilmente mantenibili da noi o da terze parti. Si scrive quindi con un occhio di riguardo al futuro cercando di scrivere codice migliore e più aperto possibile. Tuttavia è pressochè certo che durante la fase di sviluppo (e non durante la progettazione o la stesura delle specifiche) <strong>il committente varierà le specifiche iniziali o i tempi ed i modi in cui vuole che la sua applicazione venga realizzata</strong>. Questo porterà inesorabilmente il programmatore di inserire parti di codice non previste, sviluppate in poco tempo e contro i propri consigli che andranno a degradare la qualità del codice prodotto facendogli perdere leggibilità ed apertura a modifiche future.</p>
<p>Purtroppo visto che i tempi da dedicare allo sviluppo sono sempre inferiori a quelli che realmente servirebbero per scrivere delle applicazioni in modo pulito e ragionato non è possibile concentrarsi contemporaneamente sulla scrittura del codice e sul suo refactoring. <strong>Quando impegnarsi quindi per migliorare il design del proprio codice?</strong> Esisteranno sicuramene molte scuole di pensiero a riguardo (se ve ne piace qualcuna in particolare ditecelo pure nei commenti) ma quella che preferisco è quella teorizzata da Fowler come &#8220;<strong>La regola del 3</strong>&#8221; (<em>Rule of Three</em>):</p>
<p><em>La prima volta che fai qualcosa, semplicemente la fai. La seconda volta che farai qualcosa di simile, probabilmente controvoglia la duplicherai comunque. La terza volta che farai qualcosa di simile sarà arrivato il momento di compiere il refactoring.</em></p>
<p>Gli approcci alle attività di refactoring sono sostanzialmente due e possono essere svolte <strong>prima</strong> di introdurre una nuova modifica o <strong>dopo</strong> la sua introduzione. Nel primo caso si tratterà di preparare il codice per ospitare nuove funzionalità andando a migliorare il design dell&#8217;applicazione dove possibile al fine di rendere meno vincolanti alcune operazioni presenti nel codice già scritto. In questo modo si potrà risparmiare tempo nel momento in cui si renderà necessaria l&#8217;implementazione di nuove funzioni. Nel secondo caso, forse quello più comune, si lavora sul codice presente al fine di migliorarne la sua strutturazione immediatamente dopo aver aggiunto una nuova funzionalità. In questo modo il codice sarà lasciato sempre nella migliore delle condizioni per poterci lavorare in seguito. Le fasi di sviluppo saranno quindi due: inizialmente ci si concentra sul raggiungimento dell&#8217;obiettivo della funzionalità per poi passare al refactoring per ristrutturare e riorganizzare quanto appena prodotto.</p>
<p><strong>Di pari passo con il refactoring va il testing che deve accompagnare l&#8217;implementazione in tutto il suo processo</strong> al fine di evitare spiacevoli sorprese al momento della messa in produzione della nuova funzionalità. Quando si applicano delle modifiche al codice sorgente è possibile che si inseriscano degli errori nel codice. Spesso capita che una modifica in un punto generi un errore in un&#8217;altra parte del programma come abbiamo visto quando abbiamo parlato di PHPUnit. Ogni volta che aggiungete una funzione scrivete subito un piccolo test che controlli il suo funzionamento, poi sviluppate la funzione ed eseguitelo. Se tutto va bene siete sicuri che il codice inserito funziona e che la modifica di questo non ha influito in modo distruttivo sul resto del codice. <strong>Quando applicate refactoring del codice eseguite spesso questi test; questo vi assicura che l&#8217;interfaccia del software sia sempre la stessa, e che tutto funzioni correttamente.</strong></p>
<p><strong>Alcuni link consigliati:</strong></p>
<ul>
<li><a href="http://www.refactoring.com/" rel="nofollow">Il sito di Martin Fowler sul Refactoring</a></li>
<li><a href="http://wiki.ugidotnet.org/default.aspx/UGIdotNETWiki/LibriSuObjectOrientedDesign.html#Refactoring">Refactoring: Improving the Design of Existing Code</a></li>
<li><a href="http://en.wikipedia.org/wiki/Refactoring" title="Code refactoring">Code refactoring</a></li>
</ul>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/' addthis:title='Refactoring: migliorare la struttura del codice '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://phpblog.it/2008/05/19/refactoring-migliorare-la-struttura-del-codice/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

