ドメインコンポーネント貧血症
#設計
#React
そのアプリのユーザー体験を表すような共通コンポーネントが十分にない状況。
たとえば /pages/[id].tsx にフォームの内容が全部書かれている状況はドメインコンポーネント貧血症ということができる。全部書かれているとは、<form> や <input type="text"> がそのまま /pages 以下にあるといったことだ。
それよりも、たとえば pages には <ItemCreateForm onSubmit={...}> や <RichTextInput value={...} /> のようなものがいるほうが相応しい。
じゃぁプリミティブな <input> などを避ければ良いんかと言うと、それも違う。
たとえば Material UI のようなフレームワークを使っていて、それを直接 /pages 以下に書くことでドメインコンポーネント貧血症になることはありうる。
#styled-components は末端のコンポーネントにも命名を強制するが、これはかえってドメインコンポーネント貧血症を引き起こしやすいと思っている。