ネットワーク内で互いに通信して何らかのタスクを実行する複数の「プロセッサ」を持つシステムを設計しています。
実際、これは社内の複数のチームが使用するライブラリになるはずです。
Avro を使用して、プロセッサが受け入れる入力と出力のタイプを定義します。ここまでは順調ですね。しかし今、私の同僚の何人かは、int -> long (問題なし) または String -> int (いいえ!!!) などの変換を黙って実行することにより、単純な型に「より多くの柔軟性」を提供するよう働きかけています。アイデアは、Avro スキーマが Processor の動作を定義するというものですが、いくつかの単純なケースでは、int を String として出力する Processor が、int を必要とする Processor と通信できるようにする必要があります...
私たちはこれについて議論しており、私は次の議論で反対しています。
- 型の安全性を高める必要があり、利便性が後でバグの原因になる可能性があります。
- そのメカニズムでは、API は「あいまい」になり、プロセッサに送信できる/できないタイプが常に明確になるとは限りません。
- 最初の rev にそのメカニズムがなく、厳密な型定義が必要な場合は、いつでもそれを緩和して、後で「変換」を開始することができます。しかし、どういうわけか、これらの議論はうまくいかないようです。
その「変換」メカニズムの長所と短所は何ですか?