11位谷歌 Android 开发专家是如何看待 Kotlin 的?

Posted Android科技前沿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11位谷歌 Android 开发专家是如何看待 Kotlin 的?相关的知识,希望对你有一定的参考价值。

点击蓝字

 

Google 已经多次表达过他们不反对 Kotlin 的使用,只要 Kotlin 编译器依然生成有效的字节码,那么 Google 就不会阻止任何人使用它。

但很多人依然在等待官方的正式支持,一件可能永远不会发生的事情。

虽然我们等到了这一刻,但我想如果能够知道 Google 的 android 开发专家是如何看待 Kotlin 的,那就更好了。

如果你没有听说过,那你应该了解下,Google 开发专家(GDEs)[1]是一个旨在表彰优秀开发者对所在领域所作出的贡献的项目。

我联系了一些这样的 android 专家(人员列表很长!),我得到了来自 11 位的答复。非常感谢你们这么好能够花时间来回答。

我只是要求他们告诉我们关于 Kotlin[2] 的一点想法,答案显然是未经过修改的,所以你可以发现支持和反对(或者不那么支持)的声音。

我希望这有助于你知道 Kotlin 是如何成为一个游戏规则改变者的,同时如果你是一名 Android 开发者,我希望 Kotlin 会成为你考虑使用的一门语言。


其他的就不多说的,让我们来看看 GDEs 们的看法吧,排名不分先后:

1. Annyce Davis

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

我以前使用 Groovy 编程语言开发过 Grails 应用,对于我而言,Groovy 是对 Java 一个极大的改进。它很精简,并有助于避免当时使用Java 6 语言编码时不得不遇到的很多样板代码。当 Kotlin 出现时,我立刻被它吸引了,因为它的很多语法特性让我想起了 Groovy。它既整洁又精炼。

我是一个狂热的学习者,所以我渴望学习 Kotlin并基于 Kotlin Koans 开始我的学习之路。我也订购了《Kotlin in Action》的早期访问版本。当听了 Hadi 的 Kotlin 播客后,我被推到了正视 Kotlin 的边缘。当 Kotlin 1.1 发布后,我最终决定正视 Kotlin,并在我的线上应用中引入 Kotlin。

对于 Android 开发者而言,Kotlin 有很多优点。最明显的是它的类型系统和对空类型的处理,这迫使你在编码时指明哪些变量可为空,并在使用的时候遵循这个约定,之后编译器就会介入并确保对变量的赋值都是有效的。空指针异常[3]是我在 Android 应用程序中处理的最常见的异常类型。Kotlin 有助于公平的竞争环境。

Kotlin 另外一个显著的优点是具备扩展函数[4]的能力,通过给 Context,Activity 和 Date 类添加扩展函数,使得我的代码简洁了很多,同时变得更加易于阅读。

通过使用 Kotlin,我的代码变得更好了。


2. Sebastiano Poggi

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

我真的真的很喜欢这门语言。我个人认为它在很多情况下使得编码变成一件愉快的事情,相比之前,同样的情况下用 Java 语言编码将会感到痛苦和繁琐。我绝不是一个 Kotlin 专家,因为我还没有在日常工作中使用它,但每次做小项目时我都会使用它。你知道传说中的 10 倍效率的开发者吗?Kotlin 有时让我觉得自己就像一个 10 倍效率开发者(我一直不认为有人能够称为 10 倍效率的开发者,所以这对我来说是一个好的开始)。

简洁的语法是这门语言非常明显的好处,除此之外,我真的很感激它提供的所有附加的 API 和围绕它构建的生态系统。例如,不可变集合是我经常需要的东西,但如果不在应用中(部分)引入 Guava 函数库的话,在 Java 语言中是用不了的,但 Kotlin 对不可变集合提供了一级实现,此外还有一堆的其他特性。哦,我说过当看到 Kotlin的发布版本将对 LLVM 的支持作为一个目标时,我有多兴奋吗?

然而正如我刚才提到的,我的日常工作并没有使用 Kotlin。虽然有理由相信 Kotlin 的引入将会使项目大大受益,但这个项目却很难引入 Kotlin,因为这个项目的团队规模很大,我苦恼的发现 Kotlin 存在的主要问题:静态代码分析工具的缺乏和成熟设计模式的缺乏。

如果你的项目不大且不复杂,那么后者是一个相对次要的问题,但如果你遇到的是有十个开发者在一个有将近十年历史的巨大的代码仓库中协同工作时,具有良好的设计模式将会使你更加的安心。当然,你可以使用 Java 设计模式,但并不是所有的 Java 设计模式在 Kotlin 中都是有意义的,因为有些设计模式是专门围绕 Java 语言设计的,存在一定的局限性。这是一个漫长的讨论,我将在这里中止它,否则整篇文章就变成这个讨论了。

对我来说,前面提到的第一个问题是最关键的,也是真正决定我是否在项目中采用 Kotlin 的关键。你在项目实践中使用不了 PMD,Checkstyle,Findbugs 和其他的静态代码检查工具(还没有试过 Errorprone)的事实,将使你的项目陷入非常危险的处境。首先,如果项目中有超过 3~4 位开发者,你不能指望在代码风格上面能够严格监督;更重要的,你缺少很多从上述工具中获得的深入的 bug 检查功能。如果你从来没有(正确的)使用过静态代码检查工具,那么请举手,我当然不相信你!我知道现在有 IDE 的检查,但那些功能还远不够强大;也有几个项目为 Kotlin 带来了静态代码分析的能力,但它们还不值得让我们依赖。我真的很期待看到它们变得足够成熟,我们最终可以放心的使用它们。

在这期间,我在小的代码仓库上面使用 Kotlin,我喜欢它。


3. Jorge Barroso

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

Kotlin 迈出了 Android 开发的一大步,在这之前,Android 缺少 Kotlin 所带来的特性,相比于其他的 Java 平台,Android 平台的 Java 开发有些过时,即使现在有在推动 java 8,但它还是不会变成我们喜欢的现代编程语言。

现在我看到的一个最大的问题是它的推广,说服公司转型到 Kotlin 并展示它的价值很困难。对于技术型公司而言会相对简单,因为对于开发者来说是一个激励和挑战,但对于小公司来说更困难。此外,很多公司担心如果没有 Google 在背后支持 Kotlin 的话,将很难被广泛使用。

我喜欢这门语言以及它对生态系统的贡献,我希望能够在我的日常生活中更多地使用它,但我所从事的项目的性质不允许这样做。我鼓励大家都去看一下,但不限于 Kotlin,可能是另外一门语言,因为这会为他们打开一个新的视野,同时也是编写软件时非常有用的学习。


4. Donn Felker

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

Kotlin 是极好的,我喜欢它,它是 Android 世界的一股清流。

5. Mark Allison

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

虽然我也很喜欢 Kotlin,但我不认为它已经足够成熟到能够在线上产品中使用。成熟模式和最佳实践的缺乏,使得 Kotlin 编写的代码可能难以维护。

从 Kotlin 缺乏静态代码分析工具可以看出来。虽然 Java 的静态代码分析工具不完美,但它们可以作为衡量技术债务的好指标。Java 工具不能用于 Kotlin,因为它们专门分析的是 Java 语言源码。


6. Huyen Tue Dao

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

我完全迷上了 Kotlin。工作中我们 100% 的使用 Kotlin 进行编码,包含线上产品的代码。事实上,无论何时何地只要能够使用 Kotlin 的地方我都会使用 Kotlin 进行编码,归功于 Kotlin 和 Java 的可互操作性[5],几乎可以说任何地方都可以使用 Kotlin。我可以访问系统平台 API 和其他已经存在的代码和函数库,同时享受和利用 Kotlin 所带来的所有现代编程语言特性。

由于 Kotlin 是一门新语言,我们都在发现和定义最佳实践的过程中,我不得不同时从高级和低级两个层面仔细检查每一行代码的影响。这很有趣,迫使我更加谨慎和认真的作出某些决定。

这门语言的简洁令人惊叹。我喜欢 Android,但我们需要处理很多样板代码,Kotlin 有助于减少一些样板代码的编写。虽然太多的精简可能导致代码可读性的问题,我认为大多数时候 Kotlin 实际上提高了代码可读性,只要我们不要太疯狂,并记住我们想要什么样的最佳实践。


7. Dmytro Danylyk

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

对于那些停留在 Android 世界的开发者而言,Kotlin 是一个真正的规则改变者,它拥有很多我喜欢的特性:空类型安全,data classes[6],属性和懒加载属性,扩展函数,协程,不变性等等。

我很享受使用 Koltin 来编码,因为我没有必要在项目中引入太多的第三方库,Kotlin 已经非常好的提供了大部分的支持。

归功于 JetBrains,Kotlin 有很棒的 IDE 支持以及非常多的学习资料,甚至有在线的 REPL[7]。


8. Anup Cowkur

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

我曾经使用过像 Haskell 和 Elixir 这样的语言进行编码,因此当我进行 Android 开发时时常在想:“为什么 Android 中不能有这样好用的特性?”。  

现在使用 Kotlin,我们可以做到了。

可选类型内置在 Kotlin 的类型系统中,函数是一级公民,类型匹配(某种程度上)和不可变类型等特性终于让我在 Android 开发中可以使用真正的函数式编程。


9. David Vávra

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

在我的主要应用(Settle Up[8])的生产环境中我使用了 Kotlin,它已经足够成熟,而且相比 Java(任何版本) 有很多的优点[9]。Kotlin 完全兼容现有的 Java 工具和函数库,同时能够很好的在 Android Studio 中使用。

如果现在新创建一个 APP[10],我肯定会选择 Kotlin。最常见的反面论点是:“但是还不熟悉 Kotlin 的同事会抱怨而且会降低开发效率”。这一点我是不同意的,从 Java 转到 Kotlin 真的不需要费多大劲,而它的优点会很快呈现出来。相比之下,刚开始使用 RxJava 将会感觉困难得多。

对于移植现有 APP 而言,是否使用 Kotlin 需要根据具体情况而定。例如你可以只在一个页面使用 Kotlin,但如果想 100% 发挥这门语言的优点,那最好是全面转到 Kotlin。当然这一点我们很难向项目负责人去证明。

Kotlin 现在唯一需要的仅仅是 Google 的官方认可,Google 不需要做其他任何事情,只需要在官方文档中增加 Kotlin 版本的代码片段(像对 Swift/ObjectiveC 所做的那样)。如果官方认可 Kotlin,那么我们将会看到 Koltin 成为大部分人的主要选择,祈求在今年的 Google I/O 大会上变成现实。


10. César Valiente

11位谷歌 Android 开发专家是如何看待 Kotlin 的?

我认为 Kotlin 是一门非常棒的现代编程语言。

它的学习曲线很平缓,你可能只需要花一天时间来学习它的语法,就可以用 Kotlin 写出一些代码,实现某些功能。Kotlin 写起来真的很过瘾,很好玩,而且很简洁,它具备其他现代语言的特性,它由 JetBrains 这样很专业的团队进行持续的开发,同时一直有社区的支持,因为它是开源的!

这里我不想花时间介绍 Kotlin 的那些解放开发者的特性,因为官方文档已经做了很好的说明,同时我们可以在 IDE 或者 Web 页面中使用 Koans[11] 来进行练习,Kotlin 社区也在不断的发布者新的激动人心的内容。

在 Android 平台,Kotlin 给我们 Android 开发者带来一股清流,给了我们一个新的理由来享受编写 APP,使用 Kotlin 你可以编写更少的代码,最重要的是在一天结束时,你的代码可读性更强,样板代码更少,而且由于编写同样的代码所花费的时间更少,你将变得更有生产力,正如我前面说过的,使用 Kotlin 你会很开心!

至少在 Android 社区,有一个问题悬而未决:kotlin 已经准备好应用在线上产品了吗?我的回答是当然,JetBrains 去年就已经发布 1.0 的稳定版本。

总的来说,Kotlin 是伟大的,使用 Kotlin 你将会拥有更多乐趣,同时工作也更高效(至少比用 Java 开发 Android 强),虽然还有关于静态代码分析工具的一些问题,但如果你能够不使用这些工具,那么去尝试 Kotlin 吧,你会爱上它的!

11. Nelson Glauber

Kotlin 是一门令人印象深刻的语言,该语言的特性是惊人的,它移除了 Java 语言所需的一堆样板代码。更不用说市面上绝大多数函数库(用 Java 语言编写)完全兼容 Kotlin 的事实。另外一个使得该语言易于采用的是它和 Android Studio 的完美和稳定的兼容。

对于 Java/Android 开发者(新手可能未必如此)而言学习曲线很缓和。我从去年开始通过阅读 Antonio 的书[12](顺便说一句,这本书很棒)来学习 Kotlin,从那以后,我一直在我的个人项目和演讲中使用这门语言。

不幸的是,我还没有机会在线上产品中使用它,但我毫不怀疑 Kotlin 已经成熟到足以在大型项目中有效的使用。

在我看来,不使用 Kotlin 的唯一理由是,一旦你开始用 Kotlin 进行编码,你将不想再使用 Java 进行编码。


总结来说:

Koltin 是一门用于补充和完善 Java 不足的语言。对于 Java 开发者而言学习曲线很平缓。这不是一个非此即彼的问题,因为你可以在你的 Java 代码仓库中同时使用 Java 和 Kotlin。Kotlin 将会提高您的工作效率,从中长期来看,它将使你成为一名更好的程序员

联系人书易老师QQ:3357915965

以上是关于11位谷歌 Android 开发专家是如何看待 Kotlin 的?的主要内容,如果未能解决你的问题,请参考以下文章

准备好了吗?加入 "GDE 成长计划",成为下一位谷歌开发者专家!

准备好了吗?加入 "GDE 成长计划",成为下一位谷歌开发者专家!

倒数三天 | Android Study Jam 提交小测赢好礼

Android Study Jam 倒计时:最后一周 提交小测赢好礼

Android Study Jam 倒计时:最后一周 提交小测赢好礼

第二届ngChina开发者大会来了!