Со временем я стал ценить мышление многих маленьких функций, и мне действительно это очень нравится, но мне трудно потерять свою стеснительность применять его к классам, особенно с более чем несколькими. непубличных переменных-членов.
Каждая дополнительная вспомогательная функция загромождает интерфейс, поскольку часто код зависит от класса, и я не могу просто использовать какой-то общий фрагмент кода.
(В любом случае, насколько мне известно, я все еще начинающий, не знаю всех библиотек и т. Д.)
Так что в крайних случаях я обычно создаю вспомогательный класс, который становится другом класса, с которым нужно работать, поэтому у него есть доступ ко всем непубличным кишкам.
Альтернативой являются бесплатные функции, которые нуждаются в параметрах, но хотя преждевременная оптимизация является злом, и я фактически не профилировал и не разбирал ее ...
Я до сих пор боюсь одной лишь мысли о том, чтобы передать все, что мне иногда нужно, даже в качестве ссылки, хотя это должен быть простой адрес на аргумент.
Является ли все это вопросом предпочтения, или есть широко используемый способ иметь дело с такими вещами?
Я знаю, что попытка навязать вещи в шаблоны - это своего рода анти-шаблон, но я обеспокоен совместным использованием кода и стандартами, и я хочу, чтобы материал по крайней мере довольно безболезненно читался другими людьми.
Итак, как вы, ребята, справляетесь с этим?
Edit:
Несколько примеров, которые побудили меня задать этот вопрос:
О бесплатных функциях:
DeadMG был озадачен тем, чтобы заставить работать свободные функции ... без аргументов.
Моя проблема с этими функциями заключается в том, что в отличие от функций-членов, свободные функции знают о данных только в том случае, если вы передаете их им, если не используются глобальные переменные и т. П.
Иногда, однако, у меня есть огромная, сложная процедура, которую я хочу разбить для удобства чтения и понимания, но есть так много разных переменных, которые используются повсеместно, которые передают все данные в свободные функции, которые независимо от каждого элемента данных, выглядит просто кошмарно.
Нажмите для примера
Это фрагмент функции, которая преобразует данные в формат, который принимает мой класс сетки.
Например, для преобразования этого параметра в функцию «finalizeMesh» потребуются все эти параметры.
На данный момент это часть огромной компьютерной сетки данных, и биты информации о размерах, размерах и информации о масштабировании используются повсеместно, переплетены.
Вот что я имею в виду, говоря, что "свободным функциям иногда нужно слишком много параметров".
Я думаю, что это показывает плохой стиль и не обязательно является признаком иррациональности как таковой, я надеюсь: P.
Я постараюсь прояснить ситуацию по пути, если необходимо.