ベストアンサー1
それは矛盾ではなくバランスだ
DAMP と DRY は矛盾するものではなく、むしろコードの保守性の 2 つの異なる側面のバランスをとるものです。保守可能なコード (変更しやすいコード) がここでの最終的な目標です。
DAMP (Descriptive And Meaningful Phrases) はコードの読みやすさを向上させます。
コードを保守するには、まずコードを理解する必要があります。コードを理解するには、コードを読まなければなりません。コードを読むのにどれくらいの時間を費やしているか考えてみてください。かなりの時間です。DAMPは、コードを読んで理解するのに必要な時間を削減することで保守性を高めます。
DRY(Don't repeat yourself)は、直交性コードの。
重複を排除することで、システム内のすべての概念がコード内で単一の権威ある表現を持つことが保証されます。単一のビジネス概念を変更すると、コードも 1 つ変更されます。DRYは、変更 (リスク) をシステムの変更が必要な部分のみに分離することで、保守性を高めます。
では、なぜテストでは重複がより許容されるのでしょうか?
テストでは、入力値やセットアップ コードがわずかに異なるだけで、同じことを何度もテストするため、重複が内在することがよくあります。ただし、実稼働コードとは異なり、この重複は通常、単一のテスト フィクスチャ/ファイル内のシナリオにのみ分離されます。このため、重複は最小限で明白であり、他の種類の重複よりもプロジェクトに及ぼすリスクが少なくなります。
さらに、このような重複を削除すると、テストの可読性が低下します。各テストで以前に重複していた詳細は、新しいメソッドまたはクラスに隠されています。テストの全体像を把握するには、これらすべての部分を頭の中で再びまとめる必要があります。
したがって、テスト コードの重複はリスクが少なく、読みやすさが向上することが多いため、それが許容されると考えられる理由は簡単にわかります。
原則として、本番コードでは DRY を優先し、テスト コードでは DAMP を優先します。どちらも同じくらい重要ですが、少しの知恵で、有利な方向にバランスを傾けることができます。