[Titolo potenzialmente fuorviante, ma non sono sicuro di come sia il modo migliore per esprimerlo.]
Domanda teorica su compilatori e progettazione del linguaggio.
Dire che sto ri-implementando un metodo in una base di codice. Invece di rimuovere o commentare il metodo che sto re-implementando, lo lascio dove è, per scopi di riferimento e di test, e rimuovo solo tutte le chiamate ad esso. Qualcosa di simile al seguente (in pseudo codice stile C):
public void aMethodToCallFooVariants()
{
// oldFoo();
newFoo();
}
private void oldFoo ()
{
// Some code here that's not very good
}
private void newFoo ()
{
// Some better code here
}
newFoo è chiamato dal metodo che originariamente chiamava oldFoo, il che significa che oldFoo non è più chiamato da nessuna parte nel codice sorgente, ma è ancora presente nell'elenco.
I compilatori sono abbastanza intelligenti in modo tale che quando eseguo il mio script di compilazione, il codice per oldFoo non è incluso nel file binario compilato, o oldFoo sarà ancora incluso ma non chiamato da nessuna parte? Posso capire se il metodo pubblico sarà ancora incluso, potrebbe essere chiamato da un codice esterno al binario compilato (specialmente se è compilato come una libreria). Ma il metodo privato sarebbe ancora compilato nel binario?