データをフォーマット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. datetime2の明示的な変換ポリシーを回避する方法
- 2. リストを反復処理中にConcurrentModificationExceptionを回避する方法
- 3. 反時計回りの回転方法
- 4. ローカルデータベースにデータを格納するのを回避する方法
- 5. 複数のao.lockの回避方法を回避するには?
- 6. デコレータパターンがSRPに違反していますか?
- 7. Xcodeプロジェクトをワークスペースに変換し、gitマージの競合を回避する方法
- 8. GridViewの編集時にRowDataBoundを回避する方法は?
- 9. テーブルにデータを挿入中にテーブルロックを回避する方法
- 10. 分割回帰データをhdf5(Caffe)に変換する方法
- 11. ASP MVCでの更新による一意のキーの違反を回避する方法
- 12. 回避方法ラムダ500MB一時記憶
- 13. マルチプロセス時に各サブプロセスのspaCyデータのロードを回避する
- 14. タイムアウト時にSpring SseEmitterでHttpMediaTypeNotAcceptableExceptionを回避する方法
- 15. Emacs - ナビゲート時のカーソル移動のバックトラッキングを回避する方法
- 16. インパラが時間をGMTに変換しているのを避ける方法
- 17. 時系列データをライブストリーミングビデオに変換する方法
- 18. yahooデータの問題を回避する方法は?
- 19. 回避方法LoadLibraryEx(...、LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR)のバグ間違ったDLLをロード
- 20. 回避方法:app:validateSigningDebug?
- 21. ドロップダウンのページポストバックを回避する方法
- 22. ノードのドロップを回避する方法
- 23. ステータスのプログラムを回避する方法
- 24. Oracleのメモリリークを回避する方法
- 25. クレートのデータクエリーを回避する方法
- 26. window.openerのクロスドメインセキュリティを回避する方法
- 27. Apacheのコンテンツスプーフィングを回避する方法
- 28. Selenium Webdriver - データ複製を回避する方法
- 29. バネデータのデッドロックを回避する方法データを同時に保存しながらneo4j ogmを実行する
- 30. MySQLで間違ったデータ型のクエリを避ける方法