很多小型设计研发团队都会遇到随着系统的复杂度升级,研发的速度变得越来越慢的情况。其中一条原因是因为他们没有在设计和开发的过程中使用组件系统。组件库的建立对于团队和个人来说都是一种非常高效的设计模型。
什么是组件?
举个例子,装修过家的同学都明白,在装修前,先会设定家的定义,有做饭的区域,一定需要洗漱和睡觉,还需要学习和娱乐;我们可以把家看成系统,做饭这个场景下的厨房就是一个功能,而厨房中的水槽、灶台、冰箱等就可理解为组件。回到软件开发中,我们也可将用户使用场景作为组件系统,比如微信中的即时聊天就是一个组件系统,而这个系统中又分了很多组件模块,比如输入聊天内容、查看聊天记录等.....在这些组件模块中又包含了最基础的组件细胞,如按钮组件,按钮组件并不是你想象中的一个简单按钮,根据按钮的使用场景,又分为按钮的常态、禁用态、点击状态、已点击状态。输入框有可能可以通用在其他的功能中,而按钮组件也是可以被重复使用在一些需要点击确认的界面中。我们可以得出一个组件所具有的特性是:独立的、完整性、可自由组合;
组件对于设计和开发的重要性?
在可视化界面设计中,组件(components)就是界面特定元素组成的可被重复利用的原件。很多可视化的硬件系统在发布新版本软件时,附带会更新自己最新的人机交互指南(Human Interactive Guideline ) ,比如Apple和Google都有自己的HIG,阿里也做过Ant design的设计通用规范,便于其他的开发者在其系统上开发新的应用,能遵从其系统的交互规则,从而在一个硬件系统中能形成统一的交互体验,减少用户在使用过程中的行为认知负担,提高易用性。
在团队合作中,组件更显重要,如果同时有几位设计师共同参与某一个系统的设计,那么有可能因为一个新功能而无限叠加新的交互模式和设计元素。如果团队设计师共同协作使用组件时,我们就省去了再去规定一些相似的手势操作及刷新,包括一些常用的Toast、为空提示、无网络等等。这些若是做成通用组件,则会让整个系统更加的简洁高效。组件在被重复使用的过程中,也利于设计师修改,我们能想象在没有组件化设计的过程中,若我们要对一个系统进行换肤或者某一种按钮进行优化设计,我们首先需要整理按钮在哪些地方出现,然后再让开发逐个修改,一旦形成组件设计,只需要做完样式,让开发修改这个按钮组件,组件就会在其它地方生效新样式。
对于开发来说更是经常和组件打交道,软件工程师开发出各种各样功能的组件,然后将他们组合起来,就构成了复杂的系统,并且这种系统是可快速更迭的,如果你需要重构其中的某一个功能组件,只需将所需修改的功能组件独立出来重构,无需牵一发而动全身,以便随时进行功能更新。一旦开发成组件,就可以在多个应用中重复利用同一模块,从而降低了时间和人力成本。组件对于开发来说也便于梳理代码和走查代码集群。
什么时候适合引入组件设计?
若一个项目还在DEMO期,则没有必要就开始着手做组件库,此时是快速验证商业模式的时候,所以无需考虑组件化;但是一旦DEMO被验证了,就应该和开发工程师商讨组件规范,引入组件设计。
若一个项目超过两个设计师共同设计,那么在一开始就需要考虑简单的组件化,在设计过程中,不会出现同一个功能有不同的表现形式,而增加开发负担。我们可以想想一下,若没有组件设计思维,每一个设计师在负责不同的功能时,就可能设计出不同的按钮颜色,字体大小,导致的结果是一个系统中相同元素出现不同的表现形式,造成界面的混乱性,对于开发来说代码随着功能的增加而越来越复杂,越来越庞大,导致到后期根本无法继续更迭,或者开发期限被无限的延后,软件质量也变得很差。对于用户来说增加了软件的认知负担,易用性变得更加复杂,体验也随之变差。
当多团队在同一个APP或者系统中开发迭代时,更需要考虑组件系统。此时可将组件库分为核心基础组件库及卫星组件库,核心基础组件库越精简越好。所谓卫星组件库是基于核心组件库建立起来的,也就意味着很多核心基础组件被运用于卫星组件库。在这种阶段,需要专人来管理维护更新组件库,此时团队设计师之间的沟通和反馈显得尤为重要,从而保证组件库的新鲜度和可被继续使用的价值。
如何衡量组件设计的价值
在很多公司,Guideline和组件库对于设计师来说形同虚设,那是因为设计师和团队负责人并没有认识到其真正的价值;当设立组件库和HIG时,我们就要有正向的数据反馈机制来衡量组件库的效率及使用频次。如果组件库被使用的效率低,则我们需要看看组件库是否太过复杂和庞大,若某一个组件一直未被使用,则需要考虑现有的组件库中是否有相似的组件可替代它。
组件库对于团队来说是一种高效的协同设计模式;对于个人来说是可以积累不同的功能设计模型,从而使得设计师能在原有的组件模型上有更多的改进和思考。在生活和学习方面我们也可以善加利用组件思维来做事和整理思考。