【代码规范】我所理解的代码规范
本人是一名从事java开发2年的小菜,常用MVC框架为spring,在这里只是想谈谈我所理解的代码结构。若说的不对请指出。
我们在写程序的过程中,普通的代码层次都是会区分成controller,service,dao这三层结构,这里主要想聊一下我是怎么样理解这三个层次的,以及他们分别应该处理什么样的事情,担任什么样的角色。
此处说明一点,这些规范只是本人在coding过程中自己体会总结出来了,可能现在不全,可能现在又不足的地方,还希望各位指出。
首先简述一下controller和dao,controller这个C在众多的MVC框架中被广泛使用,controller的翻译过来就是控制器,控制器在整个代码结构中主要担当请求转发,访问权限处理,参数处理等。而dao则是负责对于数据库的基本操作。这里就不多做介绍了。
然后主要说一下service,个人觉得service层,是非常强大的一层,也是在三层结构中最重要的一层。绝大部分业务逻辑,数据库的事物,以及数据权限,可能都会在这一层去实现。那要怎么样才能写出一个优秀的service呢?我们来一起探讨一下。 service翻译过来就是"服务",那作为一个好的服务,是让客户端可以更加便捷,方便的使用他。我们先看如下例子:
1.注意service层对外的方法
//基本插入操作 public void insert(Object obj){ dao.insert(obj); } //提供给客户端使用 public void insert(String content , String contentType){ Object obj = new Object(); obj.setContent(content); obj.setContentType(contentType); dao.insert(obj); }
public Object getOrderByType(OrderType orderType){...}
public Object getOrderByType(Integer orderType){}
//基本插入操作 public void insert(Object obj){...} //插入信息和详情表 public void insertInfoAndDetail(Object obj){ this.insert(obj); otherService.insert(...); }
//查询XXX类型商品的图片 property List<Picture> getPictureByGoodsId(Integer goodsId){ Map<String,Object> params = new HashMap<>(); params.put("goodsId","goodsId"); params.put("pictureType",PictureType.XXX); }
//代码1 public void insert(Order order){ //当满足某条件下,订单直接付款通过 if(xxx){ order.setPayedStatus("已付款"); } dao.insert(o); } //代码2 public void insert(Order order){ //当满足某条件下,订单直接付款通过 updatePayed(order.getId()); dao.insert(o); } //更新是否付款 public void updatePayed(Order order){ if(xxx){ order.setPayedStatus("已付款"); } service.update(order); }