为什么要采用 Compose
更少的代码
编写更少的代码会影响开发的所有阶段:作为作者,您可以专注于手头的问题,减少测试和调试的工作量,并减少错误的可能性;作为审阅者或维护者,您需要阅读、理解、审阅和维护的代码更少。
与使用 Android View 系统相比,Compose 允许您用更少的代码做更多的事情:按钮、列表或动画——无论您需要构建什么,现在都可以编写更少的代码。以下是一些合作伙伴的评价:
- “对于相同的 Button 类,[代码]的大小减少了 10 倍。”(Twitter)
- “对于使用 RecyclerView 构建的任何屏幕,代码量也有大幅减少,而我们的大多数屏幕都是如此。”(Monzo)
- “我们非常高兴地看到,在我们的应用程序中创建列表或动画所需的代码行数如此之少。我们每个功能编写的代码行数更少,这使我们能够更加专注于为客户提供价值。”(Cuvva)
您编写的代码仅用 Kotlin 编写,而不是将其拆分为 Kotlin 和 XML:“当所有代码都用同一语言(通常是在同一文件中)编写时,跟踪代码要容易得多,而不是在 Kotlin 和 XML 之间来回跳转”(Monzo)
无论您构建什么,使用 Compose 编写的代码都简单易于维护。“Compose 的布局系统在概念上更简单,因此更容易理解。读取复杂组件的代码也更容易。”(Square)
直观的
Compose 使用声明式 API,这意味着您只需描述您的 UI——Compose 会处理其余部分。API 很直观——易于发现和使用:“我们的主题层更加直观和易读。我们能够在一个 Kotlin 文件中完成原本需要多个 XML 文件才能完成的工作,这些文件负责属性定义和通过多层主题叠加进行赋值。”(Twitter)
使用 Compose,您可以构建小型、无状态的组件,这些组件不与特定活动或片段绑定。这使得它们易于重用和测试:“我们给自己设定了一个目标,即提供一组新的 UI 组件,这些组件是无状态的、易于使用和维护的,并且直观地实现/扩展/自定义。Compose 确实为我们提供了可靠的答案。”(Twitter)
在 Compose 中,状态是明确的,并传递给可组合项。这样,状态就只有一个唯一的事实来源,使其封装和解耦。然后,随着应用程序状态发生变化,您的 UI 会自动更新。“当您推理某些内容时,需要记住的东西更少,并且超出您控制范围或难以理解的行为更少”(Cuvva)
加速开发
Compose 与您所有现有的代码兼容:您可以从 Views 调用 Compose 代码,也可以从 Compose 调用 Views。大多数常用库(如 Navigation、ViewModel 和 Kotlin 协程)都与 Compose 一起使用,因此您可以随时随地开始采用。“互操作性是我们开始集成 Compose 的地方,我们发现它'可以正常工作'。我们发现我们不必考虑诸如明暗模式之类的事情,并且整个体验非常无缝。”(Cuvva)
使用完整的 Android Studio 支持,以及实时预览等功能,您可以更快地迭代和发布代码:“Android Studio 中的预览节省了大量时间。能够构建多个预览也为我们节省了时间。通常,我们需要在不同的状态或不同的设置下检查 UI 组件——例如错误状态或不同的字体大小等。通过创建多个预览的功能,我们可以轻松地检查这一点。”(Square)
强大的
Compose 使您能够创建精美的应用程序,并直接访问 Android 平台 API,并内置支持 Material Design、深色主题、动画等等:“Compose 还解决了声明式 UI 以外的问题——可访问性 api、布局,所有这些内容都得到了改进。您想要制作的东西与实际制作它之间所需的步骤更少了”(Square)。
使用 Compose,通过动画为您的应用程序带来动感和活力变得快速且易于实现:“在 Compose 中添加动画非常容易,因此几乎没有理由不为颜色/大小/高程变化等内容添加动画”(Monzo),“您可以创建动画而无需任何特殊操作——这与显示静态屏幕没有什么不同”(Square)。
无论您是使用 Material Design 还是自己的设计系统构建,Compose 都能为您提供实现所需设计的灵活性:“将 Material Design 与基础分开对我们来说非常有用,因为我们正在构建自己的设计系统,该系统通常需要与 Material 不同的设计要求。”(Square)