atoms/ や hooks/ のような「分類のための分類」は「小さく分ける」ベストプラクティスを妨害する
#ソフトウェアアーキテクチャ(主にReact)について
関連: atoms/ や hooks/ のような「分類のための分類」の問題点
ここでは、コンポーネント・フック・その他の関数等を、まとめてモジュールと呼ぶ
モジュールは「小さく作る」べき
/mrsekut-p/関数は小さく作る
行数・複雑度を小さくする
それだけじゃなくて、「用途が限定される」ことも大事
小さく作ろうとしたとき、それらをどこに置くかが問題
1. コロケーション方式のディレクトリ構造の場合
「このモジュールは、このディレクトリの中からしか使われない」と用途を限定するところから始められる
eslint-plugin-import-access (特に「デフォルトでパッケージデフォルト」の設定) を使うと、そのファイルが配置されている同じディレクトリからのみ import できるように制限できる
https://zenn.dev/uhyo/articles/eslint-plugin-import-access
https://zenn.dev/yumemi_inc/articles/eslint-plugin-import-access-default-importability
2. 「分類のための分類」のディレクトリ構造の場合
このモジュールを利用するファイルを限定できない(紳士協定になってしまう)
用途が限定できないので、強制的に「再利用されうる」コードになり、考えることが増えすぎる
/mrsekut-p/再利用目的で小さく作るわけではない
「モジュールを小さくする」ことによって「見つけやすさ」が損なわれると考えられがち
しかし「分類の分類」を避けて「コロケーション」の方式を取れば両立できるはず
/mrsekut-p/「数が増える」は小さく作らないことの理由にならない