Quali sono i motivi per mettere i file generati in un albero parallelo agli alberi dei sorgenti? Ad esempio, in Eclipse in genere scelgo di mettere le fonti su .../src
e il compilatore ha generato file in .../classes
. Mescolare entrambi in un singolo albero mi sembra sporco, tuttavia non riesco a trovare alcun vantaggio nella separazione :
- In teoria, potrei fare il backup delle fonti più facilmente, ma non è vero. Sto usando git e ignorare tutti i file
*.class
ovunque è semplicemente banale. Con altri sistemi di controllo della versione dovrebbe essere anche molto facile. - Teoricamente, aiuta a trovare un dato file sorgente più velocemente, dato che l'albero non è inquinato dai file di classe. In realtà, raramente ne ho bisogno (l'IDE offre modi molto più veloci). Per osservare le classi sto usando la Vista Class, che riassume la struttura della directory.
- In teoria, potrebbero esserci strumenti che lo richiedono, ma non ne sono a conoscenza.
Ci sono due svantaggi della separazione:
- L'IDE copia tutti i file non java ("risorse") dall'albero di origine a quello generato. Se l'IDE non rileva una risorsa modificata, allora c'è una vecchia versione sul classpath (cioè, nell'albero generato) e mi troverò a gestire un programma che lavora con la vecchia versione ... questo potrebbe costare un bel molto tempo.
- C'era una volta, ho bisogno di trovare il file di classe corrispondente a un dato file java (o viceversa), che richiede molto tempo.
Quindi quali sono i reali vantaggi della separazione?
Questa domanda non è specifica di Java (Eclipse). Tuttavia, in Java il problema di navigare in un albero parallelo è aggravato dal fatto che gli alberi tendono ad essere molto profondi (a causa della struttura delle directory che rispecchia la struttura del pacchetto e della convenzione di denominazione dei pacchetti a livello mondiale).