Search code examples
c#refactoring

Is it better to create methods with a long list of parameters or wrap the parameters into an object?


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


Solution

  • 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.