情報の引力
コードを書いてると、
ここでアレを表示するために、こっちの情報はこっちに渡さなきゃいけないとか
これとこれは同時に使うとか
といった感じで、情報同士が引かれ合うのを理解するのが大事
自分は脳内でそれを情報の引力と呼んでいた(あるいは、そう感じていた)
例えば、
一箇所から使われてないなら、それらはフォルダとして近い階層に追いた方がいい
importの相対パスの親めぐり../../../をなるべく浅くする
なので、もしも全部絶対パスにしてしまうと、これがわからなくなる
情報の引力が働きにくくなる
似た相対pathが並んだときは、そもそもまるごとひとつのオブジェクトとして渡せないかを考える
良い凝集を達成するためには、外側からの形式的な思考だけでは駄目で
情報それ自体が、どのように解釈できるのか、情報読解者たる我々がそれを認識して、どのようなアフォーダンスがあるのかを知覚して、まとめあげることが大事
「どうやって凝集を良くするのか?」というメタ認識はそれだけだと建設的な議論がしにくい
何らかの具体例や実践を踏まえた方がいい
これは、コードを分割統治して完全に分業してしまうことが危険であることも意味する
バックエンドとフロントエンドを完全に分断してしまうと、互いに渡す情報の引力を知覚できなくなってしまう
なんでこれを渡すのか、
同時に何かを渡すべきじゃないのか
といったことを感じ取れなくなる
また、感じ取るためには、直接コードを読み書きしないといけない
必要な情報だけを引数に渡す、というのを徹底することで、引数やimportに、結合のための本質的なインターフェースが浮き彫りになる
別の話題として、これを徹底するとJSとかだとobject referenceが切れてGCが効きやすいみたいな副次的な効果もあるかもしれない