None is "better", it's context dependent is affected with the way you structure your code. For instance, to me, passing 8 parameters is now way convenient for a function call. Imagine if TProcess is designed that way, and I need to pass around the process object, that would be incredibly inconvenient. However, parameter passing is faster time because of the default calling convention passes parameters through registers first, before resorting to memory. Properties, OTOH, behaves the same as global variable (which resides in memory) or worse (because properties can be mapped to function call, which adds even more slowness).