1.抽取方法(Extract Method)
在一些代码行数十分多的方法里,使用eclipse快捷键alt+shift+m抽取小方法,一般小方法不要超过20行,超过继续抽,大的方法例如一个service方法,抽到一个屏幕可见方法开头及结尾为适宜。
原则:<1>if/else分支语句块
<2>功能模块
实现某个特定模块的代码抽出来,比如这一段是做查询的,那一段是做保存的。
就将这两段分别抽成小方法。
<3>步骤。例如一个操作有很多步骤
①、取数据
2.前台页面代码的抽取,分块
①、前台页面如果代码很多(行数>300~500时),将不同的模块分开,使用include进行引入,Eg:以当前csdn首页为例:可以按照下图这样进行分块。后期维护前端页面时候效率会高很多。
3.使用一个专门的实体类拼接Sql语句
Eg:
专门写一个SqlAppend类,每个方法都是对应要接某个业务所需的SQL代码,要用StringBuffer,减少内存占用。
4.返回前台页面数据时,若带有css数据,也要使用驼峰命名
Eg:如果要返回css参数,不可以像下面这样写
model.addAttribute("img_backgroundcolor","red"); ×××
而要继续使用驼峰命名:
model.addAttribute("imgBackgroundColor","red"); √√√
5.尽可能多写注释
在写新的类,方法之前 /**+enter 写好注释
写if/else、swicth、for 时候都要有注释,避免写完代码后回顾时候需要重新跑一遍流程
6.Controller接受前台参数、方法之间尽量使用对象进行传参数
Eg:
public int editTimu(AddTimuRequest editTimuRequest,HttpServletRequest rq)
接收前台参数时:request的name,ajax的data,form里面的name与实体类属性名相同时,Spring会自动接收参数
不用写多次
String A=request.getParameter("XXA");
String B=request.getParameter("XXB");
方法间调用时,使用实体类的好处是:
A方法有 B、C、D 方法调用 D如果传参数时候,要多一个参数。则只能多写一个ACopyMethod,增加代码重复性,使用对象做参数的时候,有需要的参数我们set,没有的就不用管。
7、使用多线程时,用Queue来保证线程的安全性(现在的水平听不懂,以后等懂了再更新)
8、try/catch与throw exception(现在的水平听不懂,写的是自己的理解,以后等懂了再更新)
每个try/catch都要有日志记录,不要留空catch
①、层次关系为 controller->service->Dao->数据库
②、底层的增删改操作最好有try/catch包着,查询一般不会有异常,底层catch到错误,可以在catch中直接做记录操作,
也可以往上 throw,在上层调用的地方继续throw到controller层,一并处理。
③、所有的controller最好都要有try/catch
④ 关于RuntimeException(运行时异常,一旦报错程序便不会再往下运行),不需要try...catch..或throws机制处理的异常
9、 @Transactional注解
水平不够,还没有用过,但是大神和我说了要使用的3个条件:需在service层里,是public方法,由controller
层进行调用。
听了一个例子:一个service有10个操作步骤,到第6步的时候出错了,需回滚,并将操作状态
置回最初始值。此时事务就可以完成这种操作。
10、sql查询
某方法需要查询大量数据做数据匹配,校验的时候,最好用下图的方法:在方法的开头一并把所有数据取出
步骤3需要由步骤2的数据进行查询,步骤2需要由步骤1的数据进行查询,
切记不可以用for循环去查询
错误做法
Eg:sglEngs里面有10个工程,每个都有id,取出作为一个String的数组,用for循环去遍历数组每次取一个projId执行
正确做法
sglEngs里面有10个工程,每个都有id,取出作为一个String的数组,在前面第三点讲到的sql拼接类中,将所有的条件放到in的条件中,增加效率。
如要转载,请注明出处:http://blog.youkuaiyun.com/Aviciie/article/details/79291419