|
AI 的品味是需要,而且也在不断提高的。今天我刚好有一个例子。
我有一个 VectorBuilder的组件,这个组件是纯函数的,它接受 N 个 T 类型的输入,给出一个 vector类型的输出。
问题来了,在代码中,可以用 VectorBuilder这样方式简单定义,但实际业务中,需要由用户在 UI 界面上选择这个 T 类型。在 UI 界面中,怎么决定某个组件是不是有可以配置的选项呢?这些选项又怎么呈现在 UI 界面上,供用户选择呢?
AI 给出了它的通用解决方案(这个通用的方案,还是在我一再要求下给的,之前它给的就是针对这个组件写死的方案),它的方案就是在 VectorBuilder这个类型的定义里面,添加一个配置项 genericConfig ,再添加一个 applyGenericConfig()函数。
```
getGenericConfig?(): Record | null;
applyGenericConfig?(config: Record): BaseComponent;
```
然后被我一通批判:
```
我觉得,最好不要将这些接口,比如 applyGenericConfig ,放到组件的定义里面!我来说明一下理由,这些接口,本质上仅仅是替换一下类型,与组件本身的功能几乎没有关系,比如 VectorBuilder 这个组件,将 number 替换为 string 类型,不应该由 VectorBuilder 来考虑实现类型替换这件事。可选的类型或者可以选择的配置,也不应该是 VectorBuilder 这个组件本身需要关心的事,因为 VectorBuilder 就是一个包含泛型的类!
所以,我完全不能接受将这些东西放到组件定义里面!!
当然,你的这个通过配置来实现通用化的方法,还是比较好的,但是能不能拿到组件定义的外面呢?而且,最好也不要写一个统一管理的函数,在里面用 if else 来分别判断!
``` |