On the Journey from Legacy Code to Clean Architecture: Rebuilding the Buffer Android Composer
容器是我们应用程序的核心 - 它使我们的用户能够制作社交媒体更新,并计划他们在社交网络在自定义时间。 它从一开始就是Buffer Android应用程序的一部分。 它已经达到了我们需要重建我们已经到位的地步。
因此,抓住一杯咖啡(或您的饮料),让我们带您通过我们从遗留代码到清洁架构的学习之旅。
Android上的Buffer的简要历史
早在2012年,我们的CEO Joel就第一次承诺Android项目库。 从那时起,它已经下载了超过50万次,它允许我们的用户撰写更新和管理他们的日程安排在移动。
自从第一次提交应用程序已经看到许多变化。 容器本身也经历了几次迭代。 它是我们的应用程序的核心,所以功能已经添加和重新设计发生。
然而,它已经一段时间,因为它被重建 - 在那段时间,已经做了很多的变化。
无论这些变化是功能还是错误修复,它已经到了这样的地步,容器已经充斥着许多不同的职责,难以维持和延伸。 而事实上,没有一个代码有任何测试到位。 如果你以前使用过旧代码,我相信你会与你所做的任何更改分享这种不确定性的感觉。
所以我们开始逐位重构Composer。 几个方法后,几杯咖啡,随后一些头刮,很明显这不会是一个简单的任务。
由于composer功能与分散在整个代码中的活动和快速修补补丁紧密耦合,在保留容器的正确行为时很难分开。 通过对管道中的作曲者的计划扩展,我们知道在这个重构之后,仍然难以用编译器构建的方式扩展功能。 经过一番思考,一个电话,甚至更多的思考,我们决定得到干净和重建。
但为什么干净呢?
有很多文章解释清洁的架构,所以我这里不打算深入。 但一般的想法是,我们的项目分成层,以创建一个分离的关注。
这种分离相对于其他架构方法引入了几个优点:
对框架没有兴趣的层完全独立于它们。由于关注的分离,我们的代码变得更易于测试,因为我们可以编写更集中和细粒度的测试类对任何UI没有兴趣的层没有这些视图组件的知识层完全 独立于任何可能使用的数据库,这意味着我们有能力添加/远程数据库提供程序,如果需要,因为项目没有紧密耦合到特定的提供程序
这里有一些伟大的职位,在这里和这里的干净的建筑,绝对值得阅读,如果你想知道更多的话题 <img class="emoji" alt="