Monzo 使用 Compose 构建更强大、更优质的应用

Monzo 是一家银行,并提供了一款应用,可提供数字金融服务。他们的使命是向每个人传授生财之道。Monzo 的设计系统开始偏离 Material Design,因此他们希望找到一种简单的方法来编写和维护不断发展的自定义组件,最终他们选择了 Jetpack Compose。

策略

在 Compose 中,Material Design 组件以层形式提供在与设计系统无关的基础 API 之上。Monzo 使用基础 API 构建了自己的组件库,并以 Material 组件作为参考。他们最初一次迁移一个界面,现在所有新界面都使用 Compose。 现在,所有 Android 工程师都在生产环境中使用 Compose:“我们没有遇到任何重大问题,因此我们有足够的信心开始将其用于一些精选的新功能,最终用于所有新功能。”

结果

Monzo 团队创建了一些组件,使他们能够轻松构建新界面:“我们提供的开箱即用型组件让您在学习 Compose 的同时,更顺畅地构建界面。基于 slot 的 API 是一种出色的模式,可让我们轻松地使用许多小型构建块来构建大型组件。”

借助 Compose,Monzo 团队能够构建更高质量的应用,并添加之前在冲刺阶段无法实现的出色功能:“举个例子,动画效果非常容易在 Compose 中添加,因此几乎没有理由不为颜色/大小/高度变化等添加动画效果。这些“锦上添花”的动画往往过于复杂,不值得在视图系统中投入相应的人力和精力。”

现在,他们的代码更短,也更易于阅读、理解和维护:“与操纵可变界面层次结构的代码相比,声明式代码更易于推断。当所有代码都使用同一种语言编写并且通常位于同一文件中(而不是在 Kotlin 和 XML 语言之间来回切换)时,跟踪代码也变得更容易。别提 XML 主题和样式了!在 Compose 中,主题设置更容易理解。我们的主题仅包含我们定义的属性,值在设备之间保持一致,并且由于它是用 Kotlin 编写的,因此在 IDE 中非常容易搜索和跟踪。”

借助 Compose,Monzo 团队可以轻松测试其应用并确保应用具有无障碍功能:“它帮助我们编写了不太容易出错、运行可靠的测试,并让我们对应用在用户手中的实际运行情况充满信心。通过语义系统进行测试还可以确保我们的屏幕至少在默认情况下具有合理的无障碍功能。”

开始使用

详细了解 Compose