原文链接:http://tieba.baidu.com/p/5057895435?pn=1

1:代码格式,驼峰标识,缩进,命名规范什么的

2:写代码时请先想后写,不要边想边写

3:一个类里请不要写太多方法(实体类除外)

4:一个方法里不要写太多代码

5:当一段代码被你复制到多个地方使用时,请封装这段代码

6:继承可以帮你节约很多代码,当时请尽量少用继承。作为一种强关联结构,如果你大量的运用继承来管理你类的关系,那么在将来发生一点点需求的变化对你来说都可能会是一场灾难

7:组合和继承相反,是一种松散的结构,因此用组合来代替继承是一种很好的设计

8:思考一个功能时不要考虑先干什么后干什么,正确的思考方式是

    1:功能需要用到哪些类?2:类与类之间的关系时什么

9:将接口作为入参是一种很好的设计方式,请在你的代码中尝试使用它

10:接口职责请尽量单一,5个接口协同完成一个功能要远远超过一个接口完成5个功能

11:如果你用一个字符串作为标识,请尝试把它设计成数据字典或配置文件

12:如果你实在懒得写数据字典或配置文件清至少把它写成枚举

13:如果你实在懒得写枚举,请至少把它写成常量

14:软件设计中有很多原则,大部分你可以不记,但请务必记住其中的一个“开闭原则”

15:在Hibernate中除了数据字典外,其他的关联关系都建议设置为lazy(特殊情况下例外)

16:在Hibernate中将外键也映射为实体类中的一个属性会给你带来莫大的好处

17:同样在多对多关联中,将中间表也映射为一个实体类同样会带给你莫大的好处

18:.在Hibernate中如果你分不清saveorupdate和merge的区别,那么请使用merge

19:OpenSessionInView是一个不错的过滤器,但请不要过分依赖它

20:Map是一种很好的容器能帮我们解决很多问题,但请不要滥用。

    public Map xxx(Map param);

    像这种方法,在没有注释的情况下鬼都不知道你想干嘛

21:哪些业务该放在一起写?哪些业务该分开写?如果你正在纠结此类问题,那么请站在事务的角度上思考,需要在同一事务运行的业务请写在一起,否则请分开。

22:当你的代码非常复杂时可以考虑将service也分为两层,一层专门用来提供CRUD服务,另外一层专门用来组织对象关系

23:泛型是一种非常好的写法,请无论如何也要使用

24:如果你用session做用户登录,请在用户登录成功后删除掉旧的session,并将旧session中存放的内容放到新session中

25:如果你用spring security来做用户登录则可以不必像上面那样做,因为spring已经替你做了

26:工厂模式和单例模式是两个常见的模式,常常被新手提起,但在spring横行的当下,这两种模用的相对较少了,反而策略模式和观察者模式经常有机会使用