Code smell: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
corretto "inconsistente", falso amico dell'inglese "inconsistent" bis |
|||
(10 versioni intermedie di 8 utenti non mostrate) | |||
Riga 1:
Nell'[[ingegneria del software]], e in particolare nel contesto dello [[metodologie agili|sviluppo agile]] e dell'[[extreme programming]],<ref name="fowlerbook"/><ref>Binstock (2011)</ref> l'espressione '''''code smell''''' (letteralmente "puzza del codice") viene usata per indicare una serie di caratteristiche che il [[codice sorgente]] può avere e che sono generalmente riconosciute come probabili indicazioni di un difetto di programmazione.<ref name="fowlerbook">Fowler ''et al.'' (1999)</ref> I code smell non sono (e non rivelano) "[[bug]]", cioè veri e propri errori, bensì debolezze di progettazione che riducono la [[qualità del software]], a prescindere dall'effettiva
Nella letteratura sul refactoring esistono numerosi elenchi di code smell; il più noto e influente è quello proposto da [[Martin Fowler]] nel suo celebre libro sul refactoring.<ref name="fowlerbook"/> Sia nell'elenco di Fowler che in altri, i code smell non sono mai definiti in termini assoluti, e la loro identificazione comprende sempre un elemento di giudizio soggettivo da parte del programmatore.
== Esempi di code smell ==
* ''Codice duplicato'', uguale o pressoché uguale, in diverse sezioni di codice (viola il principio [[
* ''Metodo troppo lungo''.
* ''Classe troppo grande''.
Riga 11:
* ''Costanti magiche'': valori letterali (numeri, stringhe) che appaiono direttamente ("cablati") nel codice.
* ''Espressioni complesse'' di basso livello (per esempio aritmetiche, di manipolazione di stringhe, ...).
* ''What comments'' ("commenti cosa"): commenti che spiegano cosa fa una certa porzione di codice (sintomo che il codice non è sufficientemente chiaro di per sé).<ref>[http://tobeagile.com/2009/08/20/code-comments-good-or-bad/ Code comments: Good or Bad?] {{Webarchive|url=https://web.archive.org/web/20160322113033/http://tobeagile.com/2009/08/20/code-comments-good-or-bad/ |data=22 marzo 2016 }}, presso [http://tobeagile.com tobeaile.com]</ref>
* ''Nomi oscuri'': nomi e identificatori (di variabili, attributi, classi, ...) che non chiariscono il significato inteso dell'entità corrispondente.
* ''Nomi
* ''Dead code'' ("codice morto"): porzioni di codice che non sono usate (e non vengono cancellate), contribuendo al costo di manutenzione del codice senza produrre alcun beneficio.<ref name="codinghorror"/>
* ''Generalità speculativa'': codice scritto in una forma più generale del necessario per poter essere ''eventualmente'' applicato in futuro in contesti più ampi. L'[[extreme programming]] ha una specifica regola contro questa pratica, "You Aren't Gonna Need It" ("non ne avrai bisogno"): "implementa sempre le cose quando ne hai effettivamente bisogno, mai quando ''prevedi'' di averne bisogno".<ref>[http://xp.c2.com/YouArentGonnaNeedIt.html You Arent Gonna Need It]</ref>
Riga 19:
== Note ==
<references/>
== Bibliografia ==▼
* Andrew Binstock (2011), ''In Praise of Small Code'', «Information Week», 27 giugno 2011.▼
* Martin Fowler ''et al.'' (1999), ''Refactoring: Improving the Design of Existing Code'', Addison-Wesley. ISBN 0-201-48567-2.▼
== Voci correlate ==
Riga 26 ⟶ 30:
== Collegamenti esterni ==
* Jeff Atwood, ''[http://www.codinghorror.com/blog/2006/05/code-smells.html Code smells] {{Webarchive|url=https://web.archive.org/web/20130118193329/http://www.codinghorror.com/blog/2006/05/code-smells.html |date=18 gennaio 2013 }}'' presso [http://www.codinghorror.com/ codinghorror.com]
{{portale|informatica}}
▲== Bibliografia ==
▲* Andrew Binstock (2011), ''In Praise of Small Code'', «Information Week», 27 giugno 2011.
▲* Martin Fowler ''et al.'' (1999), ''Refactoring: Improving the Design of Existing Code'', Addison-Wesley. ISBN 0-201-48567-2.
[[Categoria:
[[Categoria:Codice sorgente]]
|