Это неплохая практика. Отличительной особенностью C ++ является то, что он позволяет программировать во многих стилях. Это дает языку большую гибкость и полезность, но, возможно, делает его более сложным в изучении, чем другие языки, которые заставляют вас писать код в определенном стиле.
Если бы у вас была небольшая программа, вы могли бы написать ее в одной функции - возможно, используя пару goto для потока кода.
Когда вы становитесь больше, разделение кода на функции помогает упорядочить вещи.
Еще больше, и классы, как правило, являются хорошим способом группировки связанных функций, которые работают с определенным набором данных.
Еще больше, пространства имен помогают.
Иногда, однако, проще всего написать функцию, которая что-то делает. Это часто бывает, когда вы пишете функцию, которая работает только с примитивными типами (например, int). У int нет класса, поэтому, если вы хотите написать функцию printInt (), вы можете сделать ее автономной. Кроме того, если функция работает с объектами из нескольких классов, но на самом деле не принадлежит одному классу, а не другому, это может иметь смысл как отдельная функция. Это часто случается, когда вы пишете такие операторы, как define, less, чтобы сравнивать объекты двух разных классов. Или, если функция может быть написана в терминах открытых методов класса и не нуждается в непосредственном доступе к данным класса, некоторые люди предпочитают писать это как отдельную функцию.
Но, действительно, выбор за вами. Что бы ни было самым простым для решения вашей проблемы, лучше всего.
Вы можете запустить программу из нескольких функций, а затем решить, что некоторые из них связаны, и преобразовать их в класс. Но если другие автономные функции естественно не вписываются в класс, вам не нужно заставлять их объединяться в один.