在这一章里,主要介绍的是组件。说起组件,什么是组件呢?这里沿用书中的定义:组件是一种自包含、可重用、可互操作的软件单位,它统一了数据和行为,通常以模块的形式存在,用于构建更大的系统。
对于组件来说,有一个与我们息息相关的词:组件化,这个词一般会跟插件化放在一起被提及,但本质上,组件化他是一种软件开发方法论,它将系统分解为独立可复用的模块(组件)来实现复杂系统的构建。组件化的主要目标是提高项目(或者说系统)的可维护性和可复用性。通过组件化,我们可以将复杂的问题分解为一系列更小、更易于管理和理解的部分。
组件化的优势主要体现在以下几个方面:
1. 提高开发效率:这点是显而易见的,由于组件可以复用,所以可以大大减少开发工作量和开发时间。我们只需要编写一次组件,就可以在多个地方使用,大大提高了开发效率。比如现在项目里的一些卡片ui,当我们进行下沉后会在多个业务场景被使用到,这就是组件化。2. 提高代码质量:这一点可能不会像上面说的提高开发效率那么会给大家直观的感受,但实际上,因为每个组件都是独立的,因此可以单独对组件进行测试和优化,从而提高整个系统的稳定性和性能。组件化使得每个组件都有明确的职责,这样可以降低代码出错的概率,提高代码的质量。这样说来其实有点抽象,举个比较直观的例子:分享功能就是一个组件,对于各个业务方,其实是不关心分享内部实现的,只需要分享组件提供对应的能力就可以了。同样,如果分享出现了问题,也只需要排查组件外和组件内是否存在问题,就可以定位问题的解决方(『甩锅』)3. 提高系统的可维护性:系统由独立的组件构成,每个组件都有明确的接口和职责。当系统需要修改或扩展时,只需要修改或添加相关的组件即可,而不需要改动整个系统。但同样的,其实组件化的缺点页不容忽视:
1. 设计和开发难度增加:组件化需要我们具有较高的抽象能力和设计能力,以确保组件具有良好的复用性和独立性。毕竟能够被抽象出来的功能才是组件,过分定制化让功能无法被其他场景使用,那就称不上组件了。2. 代码管理复杂:由于系统由许多独立的组件构成,所以代码管理(依赖管理等)可能会变得复杂。今天下午其实就遇到了一个很显著的例子
这里有几个公有的成员变量,赋值和引用几乎不可查,我将其调为私有后,添加的set、get方法,结果需要改动足足29处,说来改动其实非常小,但涉及范围过广。
3. 性能损耗:如果组件间的通信过于频繁或者组件的粒度设计得过于细,可能会导致系统性能下降。这个其实页很好理解,因为组件的存在,就需要处理依赖问题,那么一个底层base就必然存在,之前统计过一次通过消息框架打开页面和直接intent打开页面
总的来说,组件和组件化是一种非常有效的软件开发方法,它可以帮助开发者更好地管理复杂系统,提高开发效率和代码质量。但同时,它也不可避免的会导致项目的复杂化。
对于组件来说,有一个与我们息息相关的词:组件化,这个词一般会跟插件化放在一起被提及,但本质上,组件化他是一种软件开发方法论,它将系统分解为独立可复用的模块(组件)来实现复杂系统的构建。组件化的主要目标是提高项目(或者说系统)的可维护性和可复用性。通过组件化,我们可以将复杂的问题分解为一系列更小、更易于管理和理解的部分。
组件化的优势主要体现在以下几个方面:
1. 提高开发效率:这点是显而易见的,由于组件可以复用,所以可以大大减少开发工作量和开发时间。我们只需要编写一次组件,就可以在多个地方使用,大大提高了开发效率。比如现在项目里的一些卡片ui,当我们进行下沉后会在多个业务场景被使用到,这就是组件化。2. 提高代码质量:这一点可能不会像上面说的提高开发效率那么会给大家直观的感受,但实际上,因为每个组件都是独立的,因此可以单独对组件进行测试和优化,从而提高整个系统的稳定性和性能。组件化使得每个组件都有明确的职责,这样可以降低代码出错的概率,提高代码的质量。这样说来其实有点抽象,举个比较直观的例子:分享功能就是一个组件,对于各个业务方,其实是不关心分享内部实现的,只需要分享组件提供对应的能力就可以了。同样,如果分享出现了问题,也只需要排查组件外和组件内是否存在问题,就可以定位问题的解决方(『甩锅』)3. 提高系统的可维护性:系统由独立的组件构成,每个组件都有明确的接口和职责。当系统需要修改或扩展时,只需要修改或添加相关的组件即可,而不需要改动整个系统。但同样的,其实组件化的缺点页不容忽视:
1. 设计和开发难度增加:组件化需要我们具有较高的抽象能力和设计能力,以确保组件具有良好的复用性和独立性。毕竟能够被抽象出来的功能才是组件,过分定制化让功能无法被其他场景使用,那就称不上组件了。2. 代码管理复杂:由于系统由许多独立的组件构成,所以代码管理(依赖管理等)可能会变得复杂。今天下午其实就遇到了一个很显著的例子
这里有几个公有的成员变量,赋值和引用几乎不可查,我将其调为私有后,添加的set、get方法,结果需要改动足足29处,说来改动其实非常小,但涉及范围过广。
3. 性能损耗:如果组件间的通信过于频繁或者组件的粒度设计得过于细,可能会导致系统性能下降。这个其实页很好理解,因为组件的存在,就需要处理依赖问题,那么一个底层base就必然存在,之前统计过一次通过消息框架打开页面和直接intent打开页面
总的来说,组件和组件化是一种非常有效的软件开发方法,它可以帮助开发者更好地管理复杂系统,提高开发效率和代码质量。但同时,它也不可避免的会导致项目的复杂化。