私はいつもこの言葉contract
を目にしますが、意味が違うように思えたり、少なくとも私にはそう見えるので (私は英語のネイティブ スピーカーではありません)、「契約」という言葉を見ると、何を理解して何を期待すべきか確信が持てません。それから。他の誰かが同じ問題を抱えているかどうかはわかりませんが、これは私を大いに悩ませています。例えば「インターフェース」と聞くと、「抽象化、依存性注入、継承など」を連想します。そして、自分が何を求めているかを知っており、それが頭の中でうまく簡単に形作られています。
しかし、言葉contract
になると、パターンやクラスなど、それが何であれ視覚化できません。interface
それは、またはaclass
またはおそらくanattribute
などを使用して形成されたものですか.
たとえば、ここ(Json.NET 内) にクラスがあり、呼び出されたものについて話しIContractResolver
、そのページが何に使用されるかが説明されています。
IContractResolver インターフェイスは、クラスに属性を配置することなく、JsonSerializer が .NET オブジェクトを JSON にシリアル化および逆シリアル化する方法をカスタマイズする方法を提供します。
説明は非常に分かりやすいですが、見たときにアイデアを形成することはContract
できず、言うこともできません。
「ええと、これを行ういくつかのメソッドを期待しているので、それをオーバーライドして、後でこのクラスをあちこちで使用して、いくつかの機能を変更/実現します。」
これは私を大いに悩ませます。それについての記事を読んだことがありますが、彼らは契約による設計について話しているので、「契約」の意味に問題がある人にとっては役に立たないものです.
では、この用語をどのように理解すればよいか、またそれを見たときに何を期待すべきかを説明してもらえますか? 視覚化するために、サンプルコードを追加していただければ幸いです。