最佳实践 - HashMap而不是参数列表,好主意?

Jak*_*ako 6 java parameters methods signature

您好Stackoverflow社区,

我正在研究一些代码,其中可选标准标准列表提交给我的dao.方法签名包含+/- 10个参数的列表,我真的不喜欢并且想要重新格式化.另外,我想避免因为添加/删除标准而不必重构来自不同层的所有方法签名

List searchParams(String name, Long countryCode, ...){
...
}
Run Code Online (Sandbox Code Playgroud)

会成为

List searchParams(HashMap<String,Object> map) {
    BeanUtils.populate(this,map);
    ...
}
Run Code Online (Sandbox Code Playgroud)

我有点担心这种情况会因为一种不好的做法而发生,因为我放弃了对地图中传递的内容的控制以给予我灵活性?所以我的问题是,如果我走的是正确的道路呢?

NPE*_*NPE 12

当我遇到这样的情况时,我倾向于创建一个Params类,然后传递.好处是:

  • 与使用a时不同Map,你可以拥有有意义的getter/settings,正确的验证等;
  • 它是类型安全的和自我描述的(意味着很容易找到可用的参数及其类型).
  • 您可以添加新参数,而无需重构任何中间层.