advertisement

70k linee di codice, tangle architetturali e le sfide del refactoring

67 %
33 %
advertisement
Information about 70k linee di codice, tangle architetturali e le sfide del refactoring
Technology

Published on September 20, 2008

Author: predo

Source: slideshare.net

Description

Presentazioe realizzata per il JUG Genova
advertisement

70k linee di codice, tangle architetturali e le sfide del refactoring Paolo Predonzani (paolo.predonzani@manydesigns.com)

“ Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.” (www.refactoring.org)

Motivazioni per refactoring 'quotidiano' Ripensamenti rename Ridurre le duplicazioni Ridurre la lunghezza/complessità extract method Gestire il flusso/accesso dati change signature, create getter/setter Generalizzare extract interface, pull members up Migliorare l'object orientation

Ripensamenti

rename

Ridurre le duplicazioni

Ridurre la lunghezza/complessità

extract method

Gestire il flusso/accesso dati

change signature, create getter/setter

Generalizzare

extract interface, pull members up

Migliorare l'object orientation

Cosa faremmo senza 'find usages'?

'Find usages' a livello di package Package A Package B Package A Package B Questa è una 'layered architecture'

Motivazioni per refactoring architetturale Tenere a mente meno cose (modularizzare) Scrivere meno test! Comunicare il design ad altri

Tenere a mente meno cose (modularizzare)

Scrivere meno test!

Comunicare il design ad altri

DSM (Dependency Structure Matrix) con IntelliJ IDEA

I package sono ordinati in base alle dipendenze principali I tangle sono evidenziati con bordo rosso Dipendenze circolari sono evidenziate in rosso Il numero indica quante dipendenze ci sono. L'indicazione “...” vuol dire “molti”

Le dipendenze problematiche sono sopra la diagonale

Esplorare una specifica dipendenza

Dopo numerose fattorizzazioni... le dipendenze sono semplificate e organizzate

class A public void f(B b) { ... } class B public void g(A a) { ... }

class A public void f(B b) { ... } class B public void g(A a) { ... } Signature di A Signature di B

class A public void f() { B b = ... ... } class B public void g() { A a = ... ... }

class A public void f() { B b = ... ... } class B public void g() { A a = ... ... } Signature di A Signature di B Body di A Body di B

interface A void f(); interface B void g(); class ImplA implements A public void f() { B b = ... ... } class ImplB implements B public void g() { A a = ... ... }

Package A Package B Package ImplA Package ImplB Package Builder API Implementation Builder

Package A Package B Package ImplA Package ImplB Package Builder API Implementation Builder

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

ALM DAY - Rivivi l'evento Microsoft sulle sfide delle ...

... implementando pattern e linee guida consolidate tramite le ... di codice sorgente, l'automazione del deploy e molte altre tra cui il refactoring, ...
Read more

Microsoft Symposium 2013: gli atti e i video degli inteventi

Purassanta traccia le linee dell’accelerazione ... aiuta le aziende a vincere le sfide di ... architetturali descrivendo le ...
Read more

Stefano Verna

E’ stato un anno impegnativo e pieno di sfide, ... di condividere il codice e le ... sembrava dare dal punto di vista del supporto e ...
Read more

Giochi Gratis Online - Solo i più belli!

I giochi gratis del nostro sito sono recensiti in italiano e divisi per categorie, ... dovrai abbinare le coppie di automobili identiche, ...
Read more

Massimo Carli Homepage | Android, iOs, Java and more…

... si è iniziato a dividere la parte di scrittura del codice da quella ... the previous lines of code ... Sicuramente non sarà facile ma le sfide ...
Read more