Habrは主にIT業界に専念しているため、次のストーリーには多くのファンがいると思います。
少し前まで、私たちのチームはWebサービスを介して外部の金融システムと統合する必要がありました。 とりわけ、getGendersという神秘的な名前のメソッドに注目が集まりました。 この方法に関する解説は、「
Sex Guide。Strange、but two two ... 」(冗談ではない)のように聞こえた。 メソッドが入力として文字列パラメーターを受け取ったという事実により、状況は悪化しました。
さまざまなパラメーター値でメソッドを呼び出そうと何度か試みた後でも、答えを得ることができました。
id | 名前| vid
----------------------
500001 | 男性| 「1」
500012 | 女性| 「1」
おそらく私の舌だけでなく、「本当に奇妙ですが、なぜ2つあるのでしょうか?」誰もがテーブルの下に落ちたからです。
疑わしいほど長い識別子は、多くの場合、データベースへのクエリの結果に基づいてWebサービスが生成され、いくつかのテーブルの一般的なシーケンスを使用できるという事実によって説明できます。 しかし、vIdパラメーターは私たちに休息を与えませんでした...
フィンの代表者とこの重要な問題を明確にする探求。 施設は、チームで最も深刻な人物に割り当てられました。 すべてがいシンプルであることが判明しました。vIdはシステムのバージョン番号です。
なぜ私たちはそれをそれほど明確に必要とし、説明しなかったのか、乾いた「移行のための何か」に限定しました。 しかし、少なくとも遠い将来、データベース設計者と話をすることをあきらめません。バージョンを考慮に入れて、性別の参照を提示するために少なくとも2つのテーブルを使用したことは間違いないので...
誰かが興味がない場合は、インターフェイスコード(匿名化)を以下に示します。
/ **
*性別のディレクトリ(性別)。 奇妙ですが、そのうちの2つがあります...
*
* @param vId
* @return java.util.List <api.dictionary.soap.Genders>
* /
@WebMethod(action = "ns:getGenders")
@WebResult(名前= "genders"、targetNamespace = "...")
@RequestWrapper(localName = "getGenders"、targetNamespace = "..."、className = "api.dictionary.soap.GetGenders")
@ResponseWrapper(localName = "gendersList"、targetNamespace = "..."、className = "api.dictionary.soap.GendersList")
public List <Genders> getGenders(@WebParam(name = "vId"、targetNamespace = "...")String vId);
コメントに書いてください、そしてあなたがあなたの仕事で出会ったどんな興味深く、神秘的でしたか。