なぜ、DRY原則 vs 単一責務原則(SRP)の優先度判断は死ぬほど難しいのか?
BRANK
はじめにソフトウェア設計の初学者がまず戸惑うのは、原則が一枚岩ではないことです。DRY原則は重複を嫌いますが、SOLID原則の1番目にあたる単一責務原則では変更理由の分離を求めます。表面だけ見れば、同じものをまとめよと言う原則と、違うものを分けよと言う原則が、真正面から衝突しているように見えます。しかも厄介なのは、この二つの原則のどちらを優先して適用すべきかを、ソースコードのその場の見た目だけでは決められないことです。今は同じように見える処理が、将来も同じようであり続けるとは限りません。逆に、別々の部門に存在する処理であっても、背後では同じ法律や同じ規格に従っているため、本来は一つの知識として扱うべきこともあります。ここに設計判断の難しさがあります。さらに新人にとっては、この判断が覚えにくいだけでは済みません。正しいかどうかを常に考えさせられ、しかも外したときには責任だけが残ります。だから人は、難しい原則よりも、見た瞬間に適用しやすい単純ルールへ逃げたくなります。DRYが初学者に強く見えるのは、理論的に優れているからではなく、心理的に飛びつきやすいからです。この問題を本当に理解するには、DRYとSRP…