Я обычно использую статику только в сочетании с системой друзей.
Например, у меня есть класс, который использует много (встроенных) внутренних вспомогательных функций для вычисления вещей, включая операции с личными данными.
Это, конечно, увеличивает количество функций, которые имеет интерфейс класса.
Чтобы избавиться от этого, я объявляю вспомогательный класс в исходном файле .cpp классов (и, следовательно, невидим для внешнего мира), делаю его другом исходного класса, а затем перемещаю старые вспомогательные функции в статический (встроенный) член функции вспомогательного класса, передавая старый класс по ссылке в дополнение к старым параметрам.
Это делает интерфейс тонким и не требует большого списка бесплатных функций друзей.
Встраивание также работает хорошо, так что я не полностью против статики.
(Я избегаю этого столько, сколько могу, но, пользуясь этим, я люблю это делать.)