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: 330
        
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 
Userclass - 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