tags:

views:

136

answers:

3

Hi,

Is it better(what is the best practice) to create methods with a long list of parameters or wrap the parameters into an object?

I mean lets say i have a Client data type with a long list of properties and i want to update all the properties at once. is it better to do something like

public int Update(int id, string name, string surname, string streetAddress, string streetAddress2, string postcode, string town, string city, string nationality, string age, string gender,string job)
{  }

or wrap all the properties in a object and do something like

public int Update(Client client)
{  }

thanks

+12  A: 

In his book Refactoring, Martin Fowler explicitly calls out long parameter lists as a code smell and suggest refactoring such methods to use a Parameter Object.

A variation is to identify how those many parameters group themselves, and create more than one Parameter Object that represent each such group.

The advantage of a Parameter Object is that the code becomes more readable when you can give the Parameter Object a communicative name. It may turn out that the Parameter Object represents a real Domain Concept, and the next thing you can do is to start moving behavior into it.

Mark Seemann
+1 succinct and to the point!
Abel
+1  A: 

I would say it is better to use an object. If you search Stack Overflow there are numerous other posts regarding this subject

Barry
A: 

You should normally use an object. Usually when you have a large number of parameters on a method those parameters are describing a particular "state". Your example code points out exactly what i mean.

Kaius