Модернизирую мат. модель летательного аппарата. Вопрос по стилистике. Как красивее, четче и понятнее переложить численные решения кучи диф.ур на С++?
Опыт предписывает сделать класс, инкапсулирующий все данные, используемые моделью. Public-свойства (через методы чтения/записи) дадут потребителю доступ к входным и выходным параметрам модели, а метод-обработчик Handler() позволит считать модель в обработчике таймера с нужным шагом.
Вопросы:
1) Очень много параметров. Стоит ли внутри класса объединять их в какие-то логические структуры/объединения и т.д.? Структура станет четче, но код вырастет в разы, а он и так не маленький.
2) Как красивее оформить саму математику?
Хотелось бы, чтобы каждый метод класса реализовывал свою функцию, которая преобразовывает входной вектор параметров Х в выходной Y, который используется как входой для следующей функции и т.д до конца — четкая цепочка вычислений вход-выход. Но т.к. входов-выходов у каждой функции получается слишком много (а они еще и векторные), читабельность ухудшается. Насколько приемлемо стилистически делать методы без параметров, которые просто преобразовывают внутренние поля класса "втихаря"?
void CModel::Handler()
{
CalcAerodynamics();
CalcEngine();
CalcAngles();
...
...
...
}
3)Как лучше с точки зрения читабельности кода возвращать результат функции (метода), если ее выходом является сразу несколько параметров? Можно задать структуру и возвращать указатель на нее через return, можно на вход передать кучу ссылок на внешние переменные (поля класса), которые функция изменит. Можно задавать на вход кучу указателей на, по которым функция (метод) запишет выходные параметры. Можно вообще ничего не задавать, а молча изменять значения полей класса и все.
Уважаемые гуру, поделитесь опытом плиз!