要約になるように書く
多くのプログラミング言語は、実行される際、エントリーポイントがあり、順番にステップを経る
極端な話、関数などで処理を切り出さずに、main関数からすべてのステップを書き出せば動く
それだと読みづらすぎる or 再利用しづらいから、関数として切り出すわけだが
つまり、関数として適切な粒度でコードを分ける行為は、基本的には人間が読みやすくするため
プログラミング言語は人間が読み書きするためのもの、っていう観点はどっかで見た気がするけど、どこが出典だっけ?
関数として切り出すことは、その処理に名前をつけるという目的もあり、こちらも重要
人間が一度に把握できる物事には限度がある
モジュールも、行数が多すぎると意味がわからなくなる
これをわかりやすくするために関数なりモジュールなりで分割をする
このことを考えれば、あらゆる「ファット●●」は適切ではないことが分かる
その「ファット」が、コードリーディングを阻害するものなら
ファットコントローラよりファットモデルのほうがマシというのも矛盾しないが
あるモデルが様々なメソッドを持っている事自体は、コントローラがでかすぎることに比べれば苦痛は少ない
あらゆるモジュールは、人間が読める程度の量に抑えるべき
成し遂げたいことがでかくて、コード分量もでかくなるなら、分割統治やコンテクストをコントロールするといった対処をする必要がある
記憶力が良すぎる人、脳内メモリがでかすぎる人は、コードを分割しなくても把握できてしまうため、他人にとっては読みづらいコードで書いてしまうというケースも有る
エントリーポイントから始まって、適切な抽象度で段階的に要約をすることで、トップダウンで処理を理解できるようにするのが、すべてのことを理解するための第一歩
概要から始まって、詳細になっていく
この構造は、プログラミングに限らず文章全般で言えること
構造化文章とか言ったりするっけ
なので、DDDなりその他で言うレイヤー構造というのは、至極まっとうなこと
レイヤーごとの役割をどう定義するのかはさておき
プログラミングの設計に関する難しい本を読むのも大事だが、
それらの法則、原則、推奨事項が、自然言語での読み書きにおける良いパターンと類推して、人間が文章を読み書きするときの良いパターンとして覚えたほうが、導けたほうが良い
このページ自体が全然要約ができてないねmiyamonz.icon
気が向いたら編集しよう