Suppose I have the following
Class A {
Foo getFoo();
Bar getBar();
Baz getBaz();
}
And I need to define a function doStuff
that uses Foo
, Bar
, Baz
of one object and does some stuff
I'm struggling between which method of implementing doStuff
is better (suppose it would be undesirable to place doStuff
inside class A
)
Method A
void doStuff(Foo foo, Bar bar, Baz baz)
{
//some operation
}
or
Method B
void doStuff(A a)
{
Foo foo = a.getFoo();
Bar bar = a.getBar();
Baz baz = a.getBaz();
//some operation
}
To my limited knowledge, (+ pros, - cons)
Method A
+It is clear exactly what parameters doStuff()
operates on
-Susceptible to long parameter lists and more susceptible to user mistakes
Method B
+Simple, easy to use method
+Seems more extensible (?)
-Creates unnecessary dependency towards class A
Can anyone share additional insight towards the pros and cons of these two methods?
Method A (naked parameters) always has the advantages that
Method B (Parameter Object) has advantages when
That the Parameter Object introduces a new dependency on which caller and callee depend is not much of a disadvantage, since it is a simple class with no dependencies of its own.
So, Parameter Object is