跳到主要内容

关于如何设计一个组件

面试的时候经常被问到如何设计一个组件,我经常的回答是确定输入输出,但是这样的回答显然有些简略,在这里组织一下逻辑:

自底向上和自顶向下的设计,

最近在做的是自底向下的设计,但是自底向上并不代表可以无视顶层,因为顶层的数据流和约束是要影响底层的设计的,尤其是一个底层组件不能绑架顶层,这样就会导致自相矛盾,而做设计,写代码,最怕的事情就是无法自洽。无法自洽意味着混沌系统,这样的系统是无法维护和开发的。

自底向上也要理解顶层的设计,因为每个软件都有其要解决的问题,两个东西看起来一样,但是实际上要解决的问题不一样,那么其输入和输出就是天差地别,如果非要强行揉在一起,只会导致逻辑的膨胀,因为对于开发人员来说高内聚,低耦合是所有人都听过的,而这样不加设计就杂糅在一起偏偏就是最耦合的方式,所以在设计的时候要分层、分步、分模块,通过接口来通讯,自己内部的实现不需要暴露出去,这个保证对外提供的信息和自身的信息的解耦。

自顶向下的设计就更类似于架构师的设计,从全局出发,保证设计的完整性和统一性,这样设计出来的东西是面向未来的,可以从一个顶层做约束,其实一个设计一个组件就是一步步做约束,因为我们是有现实的问题去解决才去设计一个组件解决这个问题,那么这个问题可能本身有很多的方案去解决,但是具体到我们的项目里是已经有一些确定下来的情况了,比如是前端实现还是后端实现,前端实现用那个框架,这个都是已经确定下来的情况,这些就是已经成为现实的情况,我们无法更改,也无法超出去,顶层架构已经确定下来很多东西了,等我们这个组件彻底写出来,那么就是已经设计完成。但是在写之前,我们要先设计,比如这是一个通用组件还是一个内部组件,这是一个逻辑组件还是渲染组件,这些东西确定下来之后就要确定数据流。

其实等到了设计数据流的那部,基本的逻辑已经顺了,数据流只是最后的流程了,真正的工作量在调研上。

2024.6.16

Loading Comments...