2016-07-17 10 views
17

Ho intenzione di iniziare a utilizzare Kotlin per lo sviluppo Android oltre a Java per i suoi vantaggi. Ho installato il plugin per Android Studio e ho incluso le dipendenze rilevanti nei miei file gradle.I file Kotlin dovrebbero essere inseriti in una directory sorgente separata in Android?

Così ho letto dalla documentazione Kotlin e stack overflow che è possibile includere una directory di origine separata per i file Kotlin, in questo modo:

app:
-manifest
-java
-kotlin
-res

so di poter creare questa directo ry aggiungendo quanto segue al mio file build.gradle:

sourceSets { 
    main.java.srcDirs += 'src/main/kotlin' 
} 

La mia domanda è: dovrebbe Kotlin file 'live' con i file Java nella stessa directory o no?

Oltre alle opinioni, vorrei sapere se esiste una convenzione particolare per questo e, in tal caso, perché è così com'è.

In caso negativo, quali sono i vantaggi e gli svantaggi di ciascuna opzione?

risposta

22

L'inserimento dei file Kotlin in una directory di origine separata esiste come possibilità documentata poiché nelle prime versioni (precedenti alla 1.0) di Kotlin questa era l'unica impostazione supportata. Successivamente, il plugin Kotlin Gradle è stato reso più flessibile, quindi la separazione delle directory non è più necessaria. Non sono a conoscenza di alcun vantaggio che si possa ottenere mettendo i file Kotlin in una directory sorgente separata.

Avere una directory sorgente separata è particolarmente scomodo quando si ha un progetto Java che si sta gradualmente convertendo in Kotlin. Lo spostamento di ogni file convertito in una diversa directory di origine rende il processo di conversione inutilmente più ingombrante.

+0

Grazie per la risposta. Ho già un progetto Java abbastanza grande (per Android) che ho intenzione di aggiungere file Kotlin e convertire alcuni file Java in Kotlin. Sono d'accordo sul fatto che spostare ogni file convertito sarà noioso, e immagino che sarebbe anche scomodo dover navigare attraverso diverse directory per trovare un file Kotlin che normalmente si troverebbe nello stesso pacchetto di un file Java. Al momento, sto favorendo l'opzione di tenere tutti i file sotto una directory sorgente, ma c'è un modo per rinominare la directory dei sorgenti 'java' in qualcosa di più rilevante. –

+0

È possibile utilizzare lo stesso codice di installazione mostrato nella domanda per creare una radice di origine con il nome che si preferisce e semplicemente eliminare la radice di origine "java". Tuttavia, se sei preoccupato per le convenzioni, non penso che un simile setup sarebbe convenzionale. – yole

+0

Grazie ancora. Penso che continuerò ad usare la directory di sorgenti 'java' per ora, e forse quando avrò un gran numero di file Kotlin, li sposterò in una directory sorgente separata. –

4

Poiché il posizionamento dei file non significa molto per il compilatore Kotlin, la convenzione è di inserire i moduli "logicamente" nello stesso modo in cui si farebbe con i file Java.

Ad esempio, se si è deciso di rifattorizzare una classe Java convertendola in Kotlin, il file Kotlin risultante dovrebbe sostituire il file Java originale.

+1

Grazie per la risposta.C'è un modo per rinominare la directory dei sorgenti 'java', quindi ha più senso, dato che conterrebbe non solo i file sorgenti java, ma anche i file sorgente di Kotlin? –

+1

Questa è una domanda di grado superiore a quella di Kotlin. Personalmente non mi sarei preso la briga di rinominare nulla – voddan

+0

ottenendo un'eccezione di classe non valida quando si tenta di eseguire una mainactivity kotlin vuota? –

Problemi correlati