向大家介绍一个过度封装的例子,那就是我司的前端系统。
我司有一套非常强大的前端系统,叫做uikit,里面封装了几十个控件,整个系统基于react,功能非常强大,平时要搭个前端流程只要用这些封装好的控件搭个积木就行了,根本不需要接触到任何底层的东西。
但是,我又要说但是了。这些强大的封装好的控件,只对我司的通用设计语言能很好的适配,一旦设计风格要改了,那么控件封装的太好了你都找不到customize的地方,就很痛苦了。
封装的越多,让人感觉就越茫然,一个form暴露了几十个property,有好多种组合的用法,有些property看了名字都不知道是干嘛的,如果没有例子,我是万万不可能想到原来这个是控制那个地方的。
要做一个很好的库,其实是需要非常完善的测试的,需要投入巨大的人力和时间。然而我司这种小公司,本来大多数人都在做产品,又要做这么封装层次很高的库,难免导致bug多,以及设计的时候没考虑这个没考虑那个,很多需要级联使用的component,属实难用,积木搭出来心里也没底,万一稍微一改整个就不work了也是存在的情况。
所以我就在想,难道我们就不能直接拿个谷歌微软的前端库过来用吗,为啥我们要自己把东西搞的如此复杂。
封装的过了头,又是丧失了灵活性。背后其实也是大统一的思维定势在作怪,一定要整合整合整合,最好全部整合到一起,一个东西就能满足所有的需求,看起来完美了,但这个大东西已经无法轻松理解了。
要想跑得快,就必得轻装上阵。有时重复造些简单的东西,比理解并使用一个复杂的东西要快得多,好维护得多。