问题很简单:对于一个分页接口MyArticle.PageQuery(int pageSize, int pageIndex [, other argument])。如果传入的pageSize, pageIndex可能为小于等于0的值,我该怎么办?
.NET中有一个OutOfRangeException,貌似对这些问题是抛出这个异常的。但是我的想法是,不太愿意在这个PageQuery接口中增加参数校验机制。所以想看一看做过这种接口的人都是采用什么方法。
我这边现在在考虑: 在这个方法体内做检查: 第一种:对两个参数进行小于1检查,如果小于1则抛出参数无效的异常信息 第二种:对两个参数进行小于1检查,如果小于1则设置为默认值 不在这个方法体内做检查: 第三种:在方法的注释里面写明参数的范围,强调如何使用。在调用该方法的地方主动对参数进行格式化检查。
现在的情况是由于以往的变成习惯有大量的分页接口代码没有对这两个参数做任何检查和限制。而在这两个参数小于1的时候返回的结果属于不在期望内的结果。采用第一种的话,接口会抛出异常,需要在调用的地方进行异常捕捉处理(代码修改量最大,但是感觉最规则的做法)。第二种接口不会抛出异常,只对这些分页接口进行改造就可以了(代码量较小,但是对调用方隐藏了参数异常的信息。也就是调用的人传入了错误的参数,我还给他返回结果,他都不知道自己错了)。第三种则不需要对调用方和被调用的结构进行改造,只需要在注释中添加信息即可(单次代码修改量最小。新的调用方需要注意进行参数格式化,老的调用方在发生问题时才需要去对调用方的代码增加参数检查)。
有方法建议提,勿喷
设置默认值
如果《=0的话,pagesize=10,pageIndex=1 ######那就拦截这个异常呗,报错了就置为0,但显然判断更清晰######请问判断是指什么?######if else啊,检验必须有,通常做法是写一个分页的VO 在他们校验逻辑写VO里就行了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。