lujiaxing
14 小时 21 分钟前
哦 懂你意思了. 你是想说你只做一个类似 USB 接口的软件. 功能只要作为插件插在这个软件上就能实现相关的功能? 这确实是个好想法.
这一直都是个好设计.
但是这东西后面的结果就是:
你想的很好, 开一个你以为足够开放有足够强兼容性的接口实现某些你能想到的任何需求. 只需要接在上就行了. 你是业务的核心, 一切数据从你这里来, 一切数据从你这里走.
然后过几天新来了一个需求, 里面提到了一些新鲜的概念, 你开放出来的接口并不能兼容这个. 所以你升级了一个版本.
然后过几天新来了一个需求, 为了实现这个需求, 你的接口可能某些字段会与其他既有系统冲突. 你选择加个 if 判断如果是某个特定的插件就怎样怎样. 看似完美的解决了, 但是屎山化却已经从这里就开始了.
然后过几天新来了一个需求, 涉及到了更多更多的数据字段, 为了实现这个需求, 原来的接口已经不够用了. 然后你为了这个需求, 就只能公布了一些原来 internal 的东西. 你的微内核边界开始消解.
然后过几天新来了一个需求, 涉及到跟另外几个模块存在紧耦合的情况, 你原本设计的接口已经不足以支撑这么多特化的数据字段, 因此那几个模块之间开始绕过你这个微内核直接通信.
乱七八糟的通信开始越来越多, 逐渐的 你这个微内核的逻辑越来越复杂, 由原来的微内核变成了巨内核. 巨内核变成了整套系统里一座不起眼儿的屎山.