Best practice for passing many arguments to method?
java, parameter-passing, parameters, performance
Solution
In Effective Java, Chapter 7 (Methods), Item 40 (Design method signatures carefully), Bloch writes:
There are three techniques for shortening overly long parameter lists:
- break the method into multiple methods, each which require only a subset of the parameters
- create helper classes to hold group of parameters (typically static member classes)
- adapt the Builder pattern from object construction to method invocation.
For more details, I encourage you to buy the book, it's really worth it.
Problem
Occasionally , we have to write methods that receive many many arguments , for example : ``` public void doSomething(Object objA , Object objectB ,Date date1 ,Date date2 ,String str1 ,String str2 ) { } ``` When I encounter this kind of problem , I often encapsulate arguments into a map. ``` Map<Object,Object> params = new HashMap<Object,Object>(); params.put("objA",ObjA) ; ...... public void doSomething(Map<Object,Object> params) { // extracting params Object objA = (Object)params.get("objA"); ...... } ``` This is not a good practice , encapsulate params into a map is totally a waste of efficiency. The good thing is , the clean signature , easy to add other params with fewest modification . what's the best practice for this kind of problem ?