Ручка и бумага часто достаточно хороши, потому что вы действительно не хотите переходить в состояние, когда вы не можете визуализировать свою проблему на одном листе бумаги. При разработке решений постарайтесь разбить проблему на них на более мелкие подзадачи. Применительно к дизайну классов это называется Принцип единой ответственности . В идеале, делайте это так, чтобы классы были независимыми, а не связанными. Если они должны быть связаны, сделайте это как можно меньше. В итоге у вас будет больше, но меньших классов, которые легче обслуживать, и вам нужно будет одновременно хранить меньше всей программы в своей голове.
Хороший (бесплатный) инструмент для визуализации зависимостей в вашей кодовой базе: NDepend . Поначалу это может быть немного ошеломляющим, и нужно потратить немного времени, чтобы извлечь из этого максимум пользы.