クラスに処理を分割するのが苦手なんですが、どう勉強すればいいですか。

どうも油断すると1関数や1クラスに全部機能を打ち込んでスパゲッティになってしまう。
MVVMとか色々読んで意識してみてはいるんだけど、「結局この場合、この処理とこの処理は密結合にせざるを得ないんじゃないか」と思って
クラスに分けたと思ったらお互いが循環参照して、本当に機械的に分割しただけになってしまいます。

リーダブルコードの本が良いのかなと思って内容を見たのですが、クラス名の付け方は…という内容で自分が悩んでいる内容とは違うみたいでした。