Panda Noir

JavaScript の限界を究めるブログでした。最近はいろんな分野を幅広めに書いてます。

再利用可能にするのって意味なくない?

"再利用可能になった" はわかる。テストを書きやすいように書くと自然とそうなるから。でも、"再利用可能にしよう" がわからない。YAGNI(You ain't gonna need it)に反しているし、モジュールの安定度を上げる行為だからもっと慎重になるべきだ。そもそも、再利用する理由が同じでないのに再利用する危険性もある。

たとえば Button コンポーネントを考える。かなり汎用的な名前なので様々な場所で"使われてしまう"。結果、Button コンポーネントを変更しようとすると多くの場所に影響が出るようになる。こうなると Button は安易に変更ができない=安定度が高いコンポーネントとなる。

逆に、DangerButton コンポ―ネントを考える。このボタンは「キャンセル」や「削除」など取り消しがつかない操作をするときに使うボタンだ。このとき、DangerButton にデザイン変更が入ったとする。すると DangerButton を変えるだけで全箇所に変更が反映される。この場合は変更したい理由が同じだからOKだ(もちろん Button の場合も理由が同じであれば問題はないのだけれど、得てして Button は IconButton などに派生して使われがちなので理由が同じかどうかを判断するのが難しいことが多い)。

再利用可能にしなければ変更理由が同じコンポーネントをまとめることができないので、再利用可能に"結果としてなる"ことは多い。が、再利用したいから再利用可能にしようはちょっと待って欲しい。それは YAGNI に反しているのではないだろうか?