Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
#1

Рефакторинг: функция с большим количеством параметров - C++

10.08.2016, 15:45. Просмотров 291. Ответов 2
Метки нет (Все метки)

День добрый. Скажите плз, гуру рефакторинга. Вот есть функция и в нее передаётся туча параметров. Как лучше исправить ситуацию? На ум приходит

а) Создание некой структуры, которая будет содержать все эти поля. Заполняем структуру и передаём ее в фукнцию
б) Большую часть переменных сделать полями класса, к которому относится функция.

Мне, честно, не нравится ни первый, ни второй вариант. На ум приходит лишь какой-то совсем аццкий рефакторинг, который бы поменял функцию целиком. А какие еще бывают варианты
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.08.2016, 15:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рефакторинг: функция с большим количеством параметров (C++):

функции с переменным количеством параметров - C++
для некоторого класса необходимо чтобы его конструктор принимал переменное количество параметров. как это делается - понятно. я...

Функция с переменным числом параметров - C++
Вычисление суммы ряда значений оформить в виде функции с переменным числом параметров. прога вот: В ней не хватает как рас...

Архитектура и рефакторинг: построение системы ECS - C++
Доброго времени суток, Господа. Тема, я думаю, будет обширная, так как она больше не о том, как решить ту или иную проблему/задачу, а о...

Работа с большим количеством динамически созданных компонентов. - C++ Builder
На форме динамически создается GroupBox, а на нём множество других компонентов (GroupBox выбран исключительно из-за того, что визуально...

Построение графиков с большим количеством точек (Builder6) - C++ Builder
Добрый вечер форумчане! Передо мной возникла задача построения графиков с большим количеством точек (> 1,5 млн) + возможность увеличения...

Сделать ProgressBar при зависании формы (работа с большим количеством данных) - C++ Builder
Здравствуйте, нужно сделать progress bar на исполнение кода. Суть в том, что иде работа с большими файлами и форма зависает при выполнении...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Devenmort
9 / 9 / 9
Регистрация: 04.08.2016
Сообщений: 24
Завершенные тесты: 1
10.08.2016, 17:19 #2
Вариант А особо ничего не меняет - Только дополнительные действия по формированию структуры перед посылкой все тех же данных, максимум, чего добиваетесь - эстетическое удовольствие от вида функции, но и оно иллюзорно, т.к. чтобы с ней работать придется проделывать больше действий, чем просто прописать аргументы.
Вариант Б - возможный вариант, но все зависит от контекста использования, и того являются ли эти значения частью класса логически.
Если дадите более подробную информацию по методу, вероятность ответа вам повысится. (Кстати, о том, что функция - это функция-член класса сразу не ясно только по слову "функция", слово "метод" в данном случае уместней)
Kastaneda
Форумчанин
Эксперт С++
4652 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
10.08.2016, 18:31 #3
Можно еще функцию разбить на несколько. Я только в одном проекте видел реальную необходимость иметь очень много параметров, это был математический проект и там по-другому реально было никак. В других случая можно подумать о том, как разделить ф-цию на мелкие с небольшим кол-вом аргументов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2016, 18:31
Привет! Вот еще темы с ответами:

Функции с переменным количеством параметров - C++ Builder
Прописываю в заголовке: void __fastcall TestClass::Test(int x, ...); компилятор выдает ошибку: Conflicting type modifiers В C++...

Функция с переменным числом параметров - C++ Builder
Хочу написать функцию очищающую произвольное число MaskEdit.Выдает ошибку в описании функции. Вот код, как правильно? void...

запрос с большим количеством параметров - PHP БД
у меня сайт интернет магазин по продаже ламп, там есть подборка ламп например по количеству ват и там chekbox гаджеты, то есть можно...

.NET 4.x Как лучше всего работать с большим количеством параметров для класса? - C#
Есть класс, который имеет около 5 свойств, которые ему нужно задать, это помимо ещё около 3-ех необходимых ему объектов. public...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru