В общем, гораздо лучше передать структуру данных, которая содержит ваши переменные.Это не красиво, чтобы смотреть или использовать:
void f(int a, int b, int c, int d, int e, int f)
{
// do stuff
}
Это намного лучше:
void f(Params p)
{
// do stuff with p
}
Вы можете захотеть сделать передачу по ссылке, так что компилятор может просто передатьссылка на объект, а не копирование всей структуры данных.В качестве реального примера:
double distance(double x1, double y1, double z1, double x2, double y2, double z2)
{
double dx = x1 - x2;
double dy = y1 - y2;
double dz = z1 - z2;
return sqrt(dx*dx + dy*dy + dz*dz);
}
Было бы лучше, если бы мы инкапсулировали наши (x, y, z) в структуру данных, хотя бы:
struct Point
{
double x;
double y;
double z;
};
double distance(const Point &p1, const Point &p2)
{
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
double dz = p1.z - p2.z;
return sqrt(dx*dx + dy*dy + dz*dz);
}
Гораздо более чистый код, и вы получитедополнительный бонус в том, что он может * работать лучше (* В зависимости от того, насколько умен ваш компилятор в оптимизации любой версии).
Очевидно, что это может сильно варьироваться в зависимости от того, чего вы на самом деле пытаетесь достичь, но если у вас естьнесколько (4+) переменных, которые имеют аналогичное использование в определенном контексте, может быть лучше просто передать его в структуру данных.