今天我们说说参数校验和国际化,这些代码没有什么技术含量,却大量充斥在业务代码上,很可能业务代码只有几行,参数校验代码却有十几行,非常影响代码阅读,所以很有必要把这块的代码量减下去。
今天的目的主要是把之前例子里面的和业务无关的国际化参数隐藏掉,以及如何封装好校验函数。
今天累,少说话多贴代码,先看对比图,修改前:
service
修改后:
services
Controll的非业务代码如何去掉参考我的编码习惯 - Controller规范,下面说说去掉Local参数。
强调一下:业务代码里面不要出现和业务无关的东西,如local,MessageSource 。
去掉国际化参数还是使用的技术还是ThreadLocal。国际化信息可以放好几个地方,但建议不要放在每一个url上,除了比较low还容易出很多其他问题。这里演示的是放在cookie上面的例子:
UserUtil
CheckUtil,这里需要得到用户的语言
这里有几个小技术点:
工具类里面使用spring的bean,使用了MethodInvokingFactoryBean的静态方法注入:
server里面调用的使用没有出现类名
这里使用的jdk的import static 特性,可以在ide上配置,请自行google。
还有一小点注意,我建议参数非法的时候,把值打印出来,否则你又要浪费时间看是没有传呢还是传错了,时间就是这样一点点浪费的。
另外有些项目用valid来校验,从我实际接触来看,用的不多,可能是有短木板吧。如果你的项目valid就能满足,那就更加好了,不需要看了。但是大部分场景,校验比例子复杂N多,提示也千变万化,所以我们还是自己调用函数校验。
做了这几步之后,代码会漂亮很多,记住,代码最主要的不是性能,而是可读性,有了可读性才有才维护性。而去掉无关的代码后的代码,和之前的代码对比一下,自己看吧。
还有人说代码要注释率到多少(我们公司有段时间工具扫描要求注释率到30%以上),依我看来,大部分业务代码这么简单,你把代码写成我例子那样,还需要什么注释?注释是画蛇添足。
持续更新中。敬请期待。
===============GITHUB地址======================
所有的代码细节都在已经上了github了,地址 xwjie/PLMCodeTemplate,欢迎加星。有问题欢迎提出。