Should you always pass the bare minimum data needed into a function
Posted
by
Anders Holmström
on Programmers
See other posts from Programmers
or by Anders Holmström
Published on 2013-11-03T14:30:52Z
Indexed on
2013/11/03
16:10 UTC
Read the original article
Hit count: 267
coding-style
Let's say I have a function IsAdmin
that checks whether a user is an admin. Let's also say that the admin checking is done by matching user id, name and password against some sort of rule (not important).
In my head there are then two possible function signatures for this:
public bool IsAdmin(User user);
public bool IsAdmin(int id, string name, string password);
I most often go for the second type of signature, thinking that:
- The function signature gives the reader a lot more info
- The logic contained inside the function doesn't have to know about the
User
class - It usually results in slightly less code inside the function
However I sometimes question this approach, and also realize that at some point it would become unwieldy. If for example a function would map between ten different object fields into a resulting bool I would obviously send in the entire object. But apart from a stark example like that I can't see a reason to pass in the actual object.
I would appreciate any arguments for either style, as well as any general observations you might offer.
I program in both object oriented and functional styles, so the question should be seen as regarding any and all idioms.
© Programmers or respective owner