web-dev-qa-db-ja.com

実装の詳細と技術的な問題の違いは何ですか

これら2つの概念の違いを理解し、適切に説明できるようにしたかっただけです。

私は常に、実装の詳細を、公開されたパブリックインターフェイスの背後にある具体的なクラスの内部の仕組みであると考えてきました。

つまり、User:getEmailAddressは文字列を返します。 「email」または「emailAddress」という2つのプライベート属性の1つからこのデータをフェッチする場合があります。

このメソッドを呼び出している人は誰でも、電子メールアドレスを受信する限り、問題になりません。これは実装の詳細です。

一方、「技術的な懸念」は、インフラストラクチャレイヤーが問題を説明し、一連のインターフェイスを定義するためのドメインレイヤーの「方法」を担当するレイヤードアーキテクチャの議論中に頻繁に発生することに気づきました。その問題に対処します。

すなわち:「方法」私は実際にこの電子メールを送信するか、このデータを保持するか、またはドメインで説明されているようにこのパスワードをハッシュしますか?

インフラストラクチャレイヤー内の1つ以上のクラスが同じインターフェイスを実装する可能性があり、インターフェイスを共有するこれらのクラスは、定義上、同じ技術的な問題(メールの送信、データの永続化など)に対処します。

これらの定義は正確だと思いますか?

ありがとう。

4
user2308097

私が何かを"Implementation Detail、"と表現するときはいつでも、ユーザーはそれが行われる限り、それがどのように行われるかを知る必要がないと言っています。

たとえば、Cではポインタは実際にはコンピュータのメモリアドレスを指していますが、Javaの参照について同じことを言うことはできません(ポインタと参照の両方が本質的に同じ参照)、その参照が表現される方法は実装の詳細であるためです

管理された言語のこの特性に精通していない人々は、「この値型はヒープまたはスタックに作成されるのですか?」のような質問をすることがあります。繰り返しますが、これは実装の詳細です。 「これはあなたが気にするべきことではありません」と言う別の言い方です。実装の詳細とは、ユーザーから抽出されたものです

"Technical Concern"は、はるかに広く、より一般的な用語です。実装の詳細は技術的な問題ですが、パフォーマンス、コードの明快さ、スケーラビリティ、アーキテクチャ、稼働時間、ストレージスペースなども同様です。あなたが心配するかもしれない技術的なものはほとんど何でも「技術的な問題」です。

3
Robert Harvey