データをフォーマットAからフォーマットBに変換するクラスを作成するときに、「単一責任の原則」に違反しないようにするにはどうすればよいですか。フォーマットAとBの両方の仕様が変更される可能性があるため、このようなクラスが変更される理由は2つあります。
1 に答える
それで、私はここで新しいです、そして私が私の答えを提案する際に私が伸ばしている警告でこれを投稿します。
これまでのところ、「単一責任原則」のような概念しかとることができないように思われます。私にとって、トランスフォームクラスの唯一の責任は、あるフォーマット仕様から別のフォーマット仕様へのデータの変換を管理することです。いくつかの考え:
厳密に言えば、フォーマットの1つが変更された場合でも、理論的には、レガシーデータを変換するための以前のバージョンのフォーマットコンバーター(下位互換性)が必要になります。フォーマットの変更に関するメモを誰かがいつ受け取れないかはわかりません。または、地下室のどこかでフォーマットAv1のデータのバッチに遭遇する可能性があります。したがって、クラスの単一責任は、フォーマットA1.0からフォーマットb1.0へのデータの変換のままです。
仕様の1つが変更された場合は、クラスの新しいバージョンを作成する必要がありますよね?誰かがフォーマットAの仕様を変更したとしましょう。ここで、フォーマットA1.1からB1.0へのデータの変換を管理するクラスが必要です。単一の責任を持つ新しいクラスを作成しました。
プロジェクトの範囲内では、下位互換性の必要性を要件とは見なさない場合がありますが、SRPの概念に関しては、フォーマット仕様の一方または両方を変更するには、新しいクラスの定義が必要であると理解しています。アカデミック理論の最も厳密な用語では、複数の責任を意味するものではありません。
最後に、ある形式から別の形式へのデータのマッピングをクラスの単一責任と考える場合、いずれかの仕様への変更は、クラスの単一のジョブへの変更のみを必要とします。
イラストによる最後の例。私のクラスの責任は、特定の赤の色合いを特定のピンクの色合いに変換することであると想定します。それからある日、チーフデザイナーは、出力として明るいピンクが欲しいと判断しました。私の仕様の片側が変更されましたが、私のクラスの責任は変更されていません。翌日、最高の企業レベルで、新しい赤の基準はあずき色に似ていると判断されます。入力仕様が変更されましたが、クラスの責任は変更されていません。新しいクラスを作成し、ホールドオーバー用にバージョン1.0を保持するか、既存のバージョンを更新するかを決定する場合があります。いずれの場合も、クラスには単一の責任があります。赤の仕様をピンクの仕様にマッピングします。