锁定老帖子 主题:在什么时候对参数进行验证
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-20
最后修改:2011-05-20
比如在Action的一个函数里面调用一个Service的方法,参数验证位置有三种情况:
如果一个函数要求参数不能为空或是空字符串,在函数的里面应该就是这样的: public void doSomething(String foo) { if (null == foo || "".equals(foo.trim())) { return; } // some code } 在另一个函数里面调用到了上面的方法: public void doAnything(String foo) { if (null == foo || "".equals(foo.trim())) { return; } doSomething(foo); // some code } 这样的话验证参数的代码就重复了。 个人认为,在Service层里面可以不进行参数的验证,假定参数都是正确的。而是在调用Service层的方法之前,先对要传入的值进行验证,正确了才能调用相应的方法。 问题核心就是,是要在一个函数里面进行参数验证,还是在调用函数前对参数进行验证。 大家平常怎么写的,相互参考下。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-05-20
简单的会在action层进行校验,复杂一些的,比如要配合DAO层校验的就写在Service中
|
|
返回顶楼 | |
发表时间:2011-05-20
是的,我支持在service不对参数进行校验,由上层负责数据校验,必要时可以在下层加assert。 action负责传给service层的数据的正确性,service层负责传个dao层的数据正确性。
|
|
返回顶楼 | |
发表时间:2011-05-20
引用 在Action里调用Service的方法前 |
|
返回顶楼 | |
发表时间:2011-05-20
我认为参数的正确性检测,应该由调用方进行,如果不正确,就不能调用相应的函数。一个函数可以假定参数是正确的进行处理。这样即可以保证参数的正确性又没有代码冗余。
|
|
返回顶楼 | |
发表时间:2011-05-20
个人认为,在action中一般只验证用户输入的正确性。而在service中应该验证这个参数是否满足业务需要。
比如说一个日期,在action中只要验证这个传进来的参数是否日期类型。而在service中要验证这个日期是否是未来5天内的一个日期值。 当然了只举例。 |
|
返回顶楼 | |
发表时间:2011-05-20
这怎么能说重复呢,除了dosomthing调用foo之外,说不定其他代码也调用呢
|
|
返回顶楼 | |
发表时间:2011-05-20
这种问题通常是防御式编程,写service的能保证写action的帮你验证?再说都叫service了,未必只有action才调用,可能有其他客户端呢。
|
|
返回顶楼 | |
发表时间:2011-05-20
楼主你说的是正确的做法
|
|
返回顶楼 | |
发表时间:2011-05-20
kjj 写道 这怎么能说重复呢,除了dosomthing调用foo之外,说不定其他代码也调用呢
其他代码调前,也是要先进行参数验证的。 |
|
返回顶楼 | |