关于web开发中的规范流程

来源:互联网 发布:华为云计算部门北京 编辑:程序博客网 时间:2024/05/01 12:13

1. 不知不觉中做web开发将近5个月了,其实真正的web代码我写的并不多,之前写过一段时间的Python项目,但是最近在写web项目的时候感觉各自的代码风格都不一样,我属于那种简洁风格流派的,基本是受到了之前公司项目经理(悟空)的影响,在他手下做了4个月感觉学会了不少东西,有些知识结构以及新视野方面的东西当时并不是很理解,但是走过来回想那些知识发现都是些非常受益的东西,我一般写代码能用一个方法复用的话是坚决不会写2个方法或者接口的,因为我觉得那样子很奇怪,我不喜欢这么干。

2. 对于前端传参,一般不用多说,现在主流的都是json,到controller层接收参数,我之前的习惯是直接用实体对象去接收参数,因为这样做有一个很好的地方就是我这一个接口可以接收的参数有很多,之前做商品管理项目的时候无非做的最多的就是对spu和sku的操作,这样我直接用实体去接收,然后到service层去做相应的操作,我个人觉得这么做会让代码很简洁,而且接口尽量可以做到复用,相反的我很反对的写法就是下面这种
这里写图片描述

我觉得这种做法让代码的扩展性性非常的差,下面是我的代码习惯。

这里写图片描述

   当然我这里写的是get请求方式的列子,其实post请求也应该是这样的,用请求体传参,后台使用实体对象接收。   另外这里我需要介绍一个restful测试client,postman是一个很多开发人员熟知的restful测试插件,可以在谷歌浏览器中直接安装这个插件,方便测试。

这里写图片描述

postman可以帮助web开发人员完成各种接口的测试,非常方便有效。所有推荐给大家。拿走不谢,说到这里我想不得不吐槽一番,现在公司架构思想非常传统,要求我针对每一个service层和controller层的每一个接口和方法都写完整的测试用例,我个人感觉这个根本没必要,系统开发到最后会发现大把的测试用例,让工程显得非常的臃肿,我很不喜欢。不过这个也跟我们现在这套传统蒸笼式的架构设计有关,详细的就不多说,其实现在互联网的崛起,这种传统模式的架构已经淘汰很久了,现在一般再小的互联网公司都会把业务进行垂直拆分,大的互联网公司业务复杂的,都在做微服务架构,就是根据业务分表分库,把业务微服务化。介绍大家看一本书《微服务设计》,有中文版的。

3.再说说我对后台MVC的理解,从前端发出一个restful请求,首先就是请求到controller层接口,接口层的话,一般情况最常用的也就是get请求和post请求。
3.1、get请求一般用于查询请求,也就是没有涉及到数据库记录的更新操作。
3.2、post请求一般涉及到数据库的增删改操作都用post请求。
3.3、controller层的职责就是完成请求接收及数据传输的工作,我个人的开发习惯最开始很不好,习惯在controller层做大量的数据数据处理工作,开始工作的时候也是受了他人代码的影响,后来被悟空多次纠正之后,我开始慢慢的转向正规写法,正规的controller接口层其实工作应该很少,代码越简洁越好,这样也有力于后期的代码维护。下面是我最近写的一个接口层,代码很少,但是完成了分页查询。其实这段代码还可以写得再简洁些。

这里写图片描述

3.4、service层的理解 service层也就是逻辑业务层,一般而言这一层会负责一个业务流水线的所有业务工作,从controller层拿到业务需求和相应的数据,在service通过调用dao层来做数据的操作,这里我需要强调的一点,也是目前开发中很多公司都没有做到规范化,对于数据库的操作尽量是单表操作,不管是查询还是增删改操作,都使用单表操作,这样做可以使得dao层分工明确,而且可以做到把一个业务细分,这样做也有利于代码维护等好处,比如现在要从两张表或者三张表拿数据字段,那么我建议单表查询,然后在内存中做数据整理。然后将相应的数据字段放到数据传输Dto中返回。单表操作还有一个好处就是有利于后期系统的分表分库,这样你的后端代码根本不用重复修改。而且也有很高的复用性,所以我提倡这种做法。根据业务不同做不同的逻辑处理,service逻辑层特别能看出一个程序员的思维逻辑和严密性,以及对于一些常用的设计模式的理解程度,这方面我也一直在成长中,我个人感觉我做的一直都不够好。这里给大家推荐一下,可以去看看设计模式方面的书籍,会大大提升你的代码质量,另外就是出来已久的Java8,我个人最近也在学习Java8的新特性和使用方法,很惭愧的是没能在项目中使用过,因为公司线上环境还是7的哎很无语,其实用过Java8的人应该都知道Java8的stream流式处理和lambda表达式是非常好用的,作为一个Java程序员我也建议能用尽量用8来写代码,写多了你会发现其中的奥妙。Java8方面的书籍我个人在看的是《Java8 in action》,能学习尽快学习,毕竟Java9都要发布了,不然真的很out了。

这里写图片描述

3.4、dao层的理解数据持久层,现在基本都是用的第三方orm框架,目前最为流行的应该属于mybatis或者ibatis,后者没用过,但是我觉着应该都差不太多。这里我需要给大家介绍一个插件的使用,mybatis-generator是一个很好用的插件,能够完成把你指定的数据表完成映射成dao层以及model和mapperXML文件,并且自动生成基本的增删改查的方法和映射。插件的用法我之前又在博客中介绍过,这里就不罗嗦了,我也是在摸索中学习的。
说到dao层,之前谈到的代码简洁问题,对于我个人的做法是尽量做到高可用性和代码可扩展性。由于现在公司使用的是hibernate,这里无法向大家展示我的风格。载谈谈我个人对于hibernate的看法,这个框架之前最早接触的orm框架,不过我本人一直用不习惯,这个框架的唯一好处就是不用自己动手写sql,不过我倒是觉得这是一种不正确的做法,作为一名后端程序员,不会写sql那可真是一件不太好的事情。所以能不用就不用的,而且现在市场上也都慢慢的放弃了这种写法。
还是跑去之前做的项目中拷了点代码来。
这里写图片描述
这几个方法基本可以完成对这张表的所有的操作了。看起来代码是不是很简洁了,而且复用性也很高。

4、然后就是程序里面的一些其他的技术 对于一些其他的新技术,我目前在开发中还是很少接触到的,比如一些并发缓存和RateLimiter并发访问这些我也只是听说,没接触过。包括现在很多的web系统也对接大数据框架比如Hbase这些。我也是自己闲的时候在摸索学习。

1 0
原创粉丝点击