【问题标题】:Should Kotlin files be put in a separate source directory in Android?Kotlin 文件是否应该放在 Android 中的单独源目录中?
【发布时间】:2016-11-20 10:05:50
【问题描述】:

除了 Java 之外,我还将开始使用 Kotlin 进行 Android 开发,因为它具有优势。我已经安装了 Android Studio 插件并在我的 gradle 文件中包含了相关的依赖项。

所以我从 Kotlin 文档和 Stack Overflow 中了解到,可以为 Kotlin 文件包含一个单独的源目录,如下所示:

应用程序:
-清单
-java
-kotlin
-res

我知道我可以通过将以下内容添加到我的 build.gradle 文件中来创建此目录:

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

我的问题是:Kotlin 文件是否应该与 Java 文件位于同一目录中?

除了意见之外,我想知道这方面是否有特定的约定,如果有,为什么会这样。

如果不是,那么每个选项的优缺点是什么?

【问题讨论】:

    标签: java android kotlin


    【解决方案1】:

    将 Kotlin 文件放在单独的源目录中作为记录的可能性存在,因为在 Kotlin 的早期(1.0 之前)版本中,这是唯一受支持的设置。之后,Kotlin Gradle 插件变得更加灵活,因此不再需要目录分离。我不知道将 Kotlin 文件放在单独的源目录中可以获得什么好处。

    当您有一个逐渐转换为 Kotlin 的 Java 项目时,拥有一个单独的源目录尤其不方便。将每个转换后的文件移动到不同的源目录会使转换过程变得不必要地繁琐。

    【讨论】:

    • 感谢您的回答。我已经有一个相当大的 Java 项目(适用于 Android),我将向其中添加 Kotlin 文件并将一些 Java 文件转换为 Kotlin。我同意移动每个转换后的文件会很乏味,而且我想必须浏览不同的目录来查找通常与 Java 文件位于同一包下的 Kotlin 文件也会很不方便。目前,我倾向于将所有文件保存在一个源目录下,但有没有办法将java 源目录重命名为更相关的名称。
    • 您可以使用问题中显示的相同设置代码来创建具有您喜欢的名称的源根目录,然后只需删除“java”源根目录即可。但是,如果您担心约定,我认为这样的设置不会是传统的。
    • 再次感谢。我想我现在会继续使用java 源目录,也许当我有大量 kotlin 文件时,我会将它们移动到单独的源目录。
    【解决方案2】:

    由于文件的放置对 Kotlin 编译器来说意义不大,因此约定是按照与 Java 文件相同的方式“逻辑地”放置在模块中。

    例如,如果您决定通过将 Java 类转换为 Kotlin 来重构它,则生成的 Kotlin 文件应取代原始 Java 文件。

    【讨论】:

    • 感谢您的回答。有没有办法重命名 java 源目录,这样更有意义,因为它不仅包含 java 源文件,还包含 kotlin 源文件?
    • 这更像是一个等级问题,而不是一个 Kotlin 问题。就个人而言,我不会费心重命名任何东西
    • 在尝试运行空的 kotlin mainactivity 时遇到 classnotfoundexception?
    猜你喜欢
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2016-06-06
    • 1970-01-01
    • 2023-03-22
    • 2011-07-07
    • 1970-01-01
    相关资源
    最近更新 更多