Codice morto

Da Wikipedia, l'enciclopedia libera.

In informatica il codice morto è un termine della programmazione con il quale si indica del codice sorgente di un programma che viene eseguito, ma produce un risultato che non sarà mai utilizzato in nessun'altra computazione. L'esecuzione di codice morto comporta inoltre uno spreco di tempo computazionale.

Mentre il risultato di una computazione morta non dovrebbe essere usato, il codice morto può generare eccezioni o influire sullo stato globale, in tal modo la rimozione di tale codice può modificare l'output del programma e dar luogo a bug involontari. Se vi è ambiguità nel garantire una ininfluenza dell'output di programma, le ottimizzazioni del compilatore mantengono tipicamente un approccio conservativo e tendono quindi a non rimuovere il codice morto.

Esempi

| ]
int foo (int iX, int iY) { int iZ = iX/iY;// Può accadere una divisione per zero return iX*iY; } 

Nell'esempio sopra, la divisione di iX e iY è computata ma mai utilizzata. È perciò codice morto e può essere rimosso.

public void Metodo(){  final boolean bDebug = false;   if (bDebug){  //fai qualcosa…  } } 

Nell'esempio sopra, "fai qualcosa" non verrà mai eseguito, è perciò codice morto. Il compilatore Java è intelligente a sufficienza da non compilarlo.

Rimozione del codice morto

| ]

Eliminare il codice morto comporta due principali vantaggi: riduce la dimensione del programma, un'importante considerazione in alcuni contesti, e permette al programma di evitare l'esecuzione di operazioni irrilevanti, riducendo quindi il tempo d'esecuzione. Il codice morto include codice che non sarà mai eseguito e codice che influisce solo su variabili morte, ovvero variabili irrilevanti nell'output di programma. Consideriamo il seguente esempio scritto in C.

int foo(void)  {  int iA = 24;  int iB = 25; /* Assegnamento della variabile morta */   int iC = iA << 2;  return iC;   iB = 24; /* Codice irraggiungibile */  return 0;  } 

A causa dell'esecuzione incondizionata dell'istruzione return, l'assegnazione di iB non verrà mai raggiunta. È pertanto possibile rimuovere tale codice.

Note

| ]
  1. ^ Saumya K. Debray, William Evans e Robert Muth, Compiler techniques for code compaction, in ACM Trans. Program. Lang. Syst., vol. 22, n. 2, 1º marzo 2000, pp. 378-415, DOI:10.1145/349214.349233.
  2. ^ Appel, A. W. 1998 Modern Compiler Implementation in Java. Cambridge University Press.

Voci correlate

| ]

Collegamenti esterni

| ]
  • (EN) Denis Howe, dead code, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • UCDetector Plugin di Eclipse per trovare codice morto in Java
image Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica

wikipedia, wiki, libro, libri, biblioteca, articolo, leggere, scaricare, gratis, download gratuito, mobile, telefono, android, ios, apple, telefono cellulare, pc, web, computer, Informazioni su Codice morto, Che cos’è Codice morto? Cosa significa Codice morto?

0 risposte

Lascia una risposta

Vuoi partecipare alla discussione?
Sentiti libero di contribuire!

Scrivi una risposta

I campi obbligatori sono contrassegnati con * *