我们正在设计一个系统,该系统将具有多个“处理器”,这些“处理器”在网络中相互通信以完成某些任务。
实际上,这应该成为一个库,将被公司的几个团队使用。
我们使用 Avro 来定义处理器将接受的输入和输出类型。到目前为止,一切都很好。但是现在,我的一些同事正在游说通过静默执行一些转换来为简单类型提供“更大的灵活性”,例如 int -> long(精细)或 String -> int(否!!!)。这个想法是 Avro 模式定义了处理器的工作原理,但在一些简单的情况下,我们应该让一个将 int 作为字符串输出的处理器与需要一个 int 的处理器对话......
我们正在对此进行辩论,我用以下论点反对它:
- 我们应该有更多的类型安全性,现在的便利性可能会成为以后错误的来源;
- 使用这种机制,API 会变得“模糊”,并且您可以/不能发送到处理器的类型并不总是很清楚
- 如果第一个 rev 没有这种机制并且需要严格的类型定义,我们总是可以放松它并在以后开始做一些“转换”,如果它真的是一个好主意的话。但不知何故,这些论点似乎没有通过。
这种“转换”机制的优缺点是什么?