今天和同事讨论说到方法的参数问题
他说方法参数传递一个一个的好的,这个别人一看方法就知道要传那些参数了,但是修改的话还要修改每个方法的参数个数
但是我们原来用的是对象,我也感觉到对象也好,以后修改可以不用添加方法参数,但是缺点是要看一下,到底要用到对象的哪些属性
看大神们给出最好的选择和理由
------解决思路----------------------
看你的参数个数,我觉得多于4个就应该考虑用对象传递了。
但现实情况是,有时候设计之初这个方法只有3个参数,改成了4个,然后改成了5个,然后改成了6个,所以一直也没用对象传递参数,导致参数越来越多。
我觉得有个办法比较好,你可以设计几个泛型参数的class,比如class A有5个属性,class B有6个属性,class C有7个属性,构造A,B,C的时候把参数的类型依次写进去。
这样以后每次你有5个参数的时候,你都可以直接new A,有6个参数的时候就new B...
------解决思路----------------------
传递对象可扩展性更好一些.
------解决思路----------------------
如果确定不了参数个数的话,用类最好
ServletRequestDataBinder binder = initBinder(AAAA);
binder.bind(request);
public ServletRequestDataBinder initBinder(Object target){
return new ServletRequestDataBinder(target);
}
创建类AAAA,在类里定义到参数属性, ACTION提交后用上面的方法获取,AAAA类的属性就会填充有值
------解决思路----------------------
用参数,可读性很重要!
------解决思路----------------------
方法的说明是关键。
哪些参数是必须的,哪些是可选的,即使用Map传参数(可以减少参数列表的长度),Map里每个元素都应该有说明。
------解决思路----------------------
那不是每个方法所需要的参数都封装成一个对象
适量的减少参数个数很重要。但也不要走极端
------解决思路----------------------
第一次定义方法时 是否需要对象 看方法功能和参数类型 如果两个参数属于一个性质 就应该定义成对象
以后如果要修改参数列表 也要看要添加的参数 和既有参数是什么关系 如果属于其中的对象特性 才考虑往
对象里添加 如果是新的特性 也不必硬往原来的函数里塞 可以考虑再定义个重载函数