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