データをフォーマットAからフォーマットBに変換するクラスを作成する際に、「単一責任の原則」に違反しないようにするにはどうすればよいですか? フォーマットAとBの両方の仕様が変更される可能性があるため、そのようなクラスを変更する理由は2つあります。データの変換時にSRP違反を回避する方法
答えて
私はここで新しく、これを私の答えを提案する際に私が伸びている警告で掲示します。
これまでのところ、「単一の責任の原則」のような概念だけを取り入れることができます。私にとって、変換クラスの責任は、あるフォーマット仕様から別のフォーマット仕様へのデータの変換を管理することです。いくつかの考え:用語の厳しいで
は、フォーマットの変更の1つが、あなたは理論的にはまだ、従来のDAT(下位互換性を)変換するためのフォーマットコンバータの以前のバージョンが必要になります。いつ誰かがフォーマットの変更についてのメモを手に入れないかも知れません。または、地下のフォーマットA v1のデータのバッチをどこかで実行するかもしれません。したがって、クラスの単一の責任は、フォーマットA1.0からフォーマットb1.0へのデータの変換のままです。
仕様のいずれかが変更された場合は、クラスの新しいVERSIONを作成する必要があります。フォーマットAの仕様を変更した人がいるとしましょう。フォーマットA1.1からB1.0へのデータの変換を管理するクラスが必要です。 1つの責任で新しいクラスを作成しました。
プロジェクトのスコープの間、あなたはSRPコンセプトの面で、下位互換性のために必要な要件を考慮していないことは、私の理解では、フォーマット仕様の一方または両方の変化が必要なことです新しいクラスの定義であり、蔓延説の厳密な意味において、複数の責任を暗示するものではない。
最後に、あるフォーマットから別のフォーマットへのデータのマッピングをクラスの単一の責任として考えると、EITHER仕様への変更は依然としてクラスの単一のジョブへの変更だけを必要とします。
最終的な例を図解で示します。私のクラスの責任は、特定の赤の色合いを特定のピンクの色合いに変換することだとします。そして、ある日cheifデザイナーは、彼が出力として明るいピンクを望むと決めましたが、スペックの片面は変わっていますが、私のクラスの責任は変わりません。翌日、最高レベルの企業レベルでは、新しい赤い標準が栗色に似ていると判断されます。今では入力仕様に変更がありますが、私のクラスの責任は変更されていません。私は、新しいクラスを作成することを決定し、holdover用のバージョン1.0を保持するか、既存のバージョンを更新するだけかもしれません。どちらの場合でも、クラスには依然として1つの責任があります。赤の指定をピンクの指定にマッピングします。
- 1. 反時計回りの回転方法
- 2. 複数のao.lockの回避方法を回避するには?
- 3. テーブルにデータを挿入中にテーブルロックを回避する方法
- 4. GridViewの編集時にRowDataBoundを回避する方法は?
- 5. Emacs - ナビゲート時のカーソル移動のバックトラッキングを回避する方法
- 6. ドロップダウンのページポストバックを回避する方法
- 7. window.openerのクロスドメインセキュリティを回避する方法
- 8. アンドロイドで時計回りと反時計回りに画像を回転する方法は?
- 9. Jquery Address Plugin:履歴の変更を回避する方法は?
- 10. 反復ブロックのコードを関数に変換する方法
- 11. 反時計回りに環境変数を設定する
- 12. MQRC2033を回避する方法NO_MSG_AVAILABLE
- 13. リダイレクトを回避する方法は?
- 14. NullReferenceExceptionを回避する方法
- 15. java.lang.OutOfMemoryErrorを回避する方法:PermGenスペース?
- 16. NullPointerExceptionを回避する方法は?
- 17. geoCoderエラーを回避する方法:503
- 18. AndroidでProgressDialogを回避する方法
- 19. ページリフレッシュを回避する方法
- 20. missingPropertyExceptionを回避する方法
- 21. jsfでBusyConversationExceptionを回避する方法
- 22. シンクでSystem.OutOfMemoryExceptionを回避する方法
- 23. IOCコンテナを回避する方法
- 24. JAXB schemagenの使用時に継承を回避する方法は?
- 25. キャンバスのサイズ変更時に瞬きを避ける方法
- 26. 反時計回りの角度から時計回りの角度への変換
- 27. json.jarからJSONObjectを回避する方法は、10進数の文字列をdoubleに変換します。
- 28. 反復メソッドを再帰的メソッド(Java)に変換する方法
- 29. ループベクトル化と回避方法
- 30. 1回のCSS3変換後にCSS3を2回変換する