大众点评用 Kotlin 打造灵活稳定兼备的应用 | Android 开发者故事
大众点评是全球最早的消费点评网站之一,成立于 2003 年。进入移动互联网时代后,用户可以在手机上使用大众点评 APP 方便地查询任何一个城市里的餐厅、影院、商场、景点和酒店等信息,并且了解其他用户写下的评价。应用也会依据用户评价数据和专家评价来推出各种榜单,比如 "必系列" 榜单和 "黑珍珠" 系列餐厅评价体系,还能根据用户的喜好为其在信息流中推荐可能感兴趣的餐厅和景点等信息。
△ "必系列" 榜单
△ "黑珍珠" 系列餐厅评价体系
为了保障用户良好的使用体验和持续迭代新的功能,应用稳定性和开发效率是点评技术团队关注的重中之重。
"点评 Android 应用的开发协作模式是壳工程依赖于一系列基础和业务组件,应用到 Kotlin 的部分分散在十余支业务团队,近四十个业务仓库中,涵盖了首页、商户页、直播、榜单等核心业务。"
—— 程康阳,Android 开发工程师
Kotlin 现代化的语言特性,比如扩展函数和 lambda 表达式,帮助团队减少了近 30% 的代码量,提升了近 20% 的需求开发效率。也因此,目前点评团队已经有 15% 左右的依赖库在使用 Kotlin 进行开发和维护。
△ Kotlin 扩展函数
Kotlin 另一个让开发团队赞不绝口的功能是空安全性,这和 Kotlin 与 Java 良好的互操作性也有关系——只需要在 Java 代码中写好 @Nullable 和 @NonNull 等注解,就能确保 Kotlin 代码获得正确的可空性推断。如此便捷强大的空安全特性也帮助团队将应用的 NPE 从日均 3 个降低至 0。
△ 在 Java 代码中使用空安全注解可以确保 Kotlin 代码获得正确的可空性推断
马双飞是团队里的 "代码洁癖者",如今基本上只要是他负责的模块,总是会尽可能地完全使用 Kotlin 进行编写和维护。而想要如此激进地使用 Kotlin,只有一个人精通这门语言是不行的。幸运的是,在团队里推广 Kotlin 的成本不算高。
"Kotlin 的语法是很直观和现代化的,学习一到两天基础知识就能上手用 Kotlin 进行开发了。所以在招聘新人的时候,就算没有 Kotlin 开发经验问题也不大,毕竟学习成本不算高。当然有 Kotlin 经验的更好!"
—— 马双飞,Android 开发工程师
能让团队放手推广 Kotlin 的另一个原因,是强大的工具支持。当需求开发涉及到大规模修改旧的 Java 代码时,团队成员会使用 Android Studio 便捷的 Convert Java File 2 Kotlin File 功能将 Java 代码先转换成 Kotlin 代码,再继续使用 Kotlin 进行开发。
△ Convert Java File 2 Kotlin File 功能
"用户体验是一个很宽泛的概念,我们的产品团队会努力用更好、更新的功能帮助用户们吃的更好、生活更好。同时,我们也在努力用新的技术提升自己开发产品时的体验。"
—— 张晓宇,团队技术主管
正如张晓宇所说,开发者们的开发体验和应用用户们的使用体验都很重要。而 Kotlin 可以帮助点评技术团队在保留历史资产的基础上,更快速、更灵活地开发产品,让开发者可以把精力集中在业务逻辑上,而不是浪费在模版代码上。
相信在整个点评开发团队中,会有越来越多的开发者将 Kotlin 作为其首选的开发语言。
您手上的开发项目中有多少在使用 Kotlin?欢迎在评论区和我们分享使用 Kotlin 的感想。
点击这里 观看 Android 开发者故事视频。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
spring kafka之如何批量给topic加前缀
前言 最近业务开发部门给我们部门提了一个需求,因为他们开发环境和测试环境共用一套kafka,他们希望我们部门能帮他们实现自动给kafka的topic加上环境前缀,比如开发环境,则topic为dev_topic,测试环境,则topic为test_topic,他们kafka客户端是使用spring-kafka。一开始接到这个需求的时候,我心里是拒绝的,为啥开发环境和测试环境不分别部署一套kafka,还要那么麻烦。但老大都答应接这个需求了,作为小罗罗也只能接了 实现思路 1、生产者端 可以通过生产者拦截器,来给topic加前缀 2、实现步骤 a、编写一个生产者拦截器 @Slf4j public class KafkaProducerInterceptor implements ProducerInterceptor<String, MessageDTO> { /** * 运行在用户主线程中,在消息被序列化之前调用 * @param record * @return */ @Override public ProducerRecord<String, MessageDTO&g...
- 下一篇
开始切换到 Kotlin: 谷歌工程师给初学者的知识点总结
在 2019 年的 I/O 大会上,我们曾宣布 Kotlin 将会是 Android 应用开发的首选语言,但是,部分开发者们反馈仍不清楚如何切换到 Kotlin,如果团队中没有人熟悉 Kotlin,一开始直接使用 Kotlin 进行项目开发还是会令人生畏。 在 Android Studio Profiler 团队内部,我们是通过几个步骤克服了这个问题,第一步是要求所有的单元测试使用 Kotlin 编写。这么做有效避免了我们犯的任何微小错误直接影响到生产环境中的代码,因为单元测试与生产环境的代码是分开的。 我收集了我们团队在历次 Code Review 中遇到过的常见问题并整理出了这篇文章,希望这篇文章对广大 Android 社区的朋友们有所帮助。 注意: 本文的目标读者是 Kotlin 的初学者,如果您的团队已经熟练使用 Kotlin 进行项目开发,本文对您的帮助可能不大。但如果您觉得我们遗漏了一些应该被提及的内容,请在本文留言区留言告诉我们。 IDE 功能: 把 Java 文件转换成 Kotlin 文件 如果您使用 Android Studio 开发程序,学习 Kotlin 的最简单...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7安装Docker,走上虚拟化容器引擎之路