这篇文章分享之前我还是要推荐下我自己的群:726272430 java海量知识分享,不管你是小白还是大牛,小编我都挺欢迎,小编还会不定期分享干货,包括我自己整理的一份最新资料和零基础入门视频教程!欢迎初学和进阶中的小伙伴前来光顾!
1,是否需要DAO/DAL
在java spring的大环境下,程序员日常开发是这样的
controller---service----(mybatis)mapper
mapper 目前可以理解为DAO(data access object)如果加入DAL,结构就变为 controller---service----DAL----(mybatis)mapper
有很多时候,确实会为了DAL打的不可开交,到底需不需要DAL(data access layer)
佛系程序员会说:
魔系程序员1:必须需要,大家都这么做的,你为什么不加
魔系程序员2:无非是在mapper上封装一层,一行代码还是一行代码,完全是脱裤子放屁
魔系程序员3:谁说必须的?你给我说清楚,说不清楚,谁也别想活着下班
道系程序员:多既是少,少既是多
这个问题我是这么认为的,加入DAL是为了在service层之前可以将必要的DAO操作聚合在DAL,减少在service层的重复代码,说白了就是复用,如果在service操作的是很简单的操作,也没有必要一定非要添加DAL,否则还是要考虑DAL,看图!
除非是个人项目一般公司的项目中,很少有这么直来直去的调用关系,所以还是建议加入DAL
以上是基于java spring 框架来说的,DAL可以理解为数据库操作的聚合层,某个DAL方法中同时包含多个数据库交互的操作
2.方法返回什么情况下用map结构?
见过很多代码包括在api(controller)层都是返回map数据,这是一个很头大的问题,表示整个项目基本上没有什么可读性了,有人说,这样的话可以保证项目的灵活性,想返回什么就返回什么,很洋气。项目最重要的不是洋气,真要洋气的话,贴个照片上去最洋气,项目对于开发者而言最重要的是可读性和规范化,如此才能保证项目良性的进入迭代,否则有一天排查一个紧急问题,你会发现,
什么情况下使用map或者其他非标品对象?最好不是对外公开的方法,自己写的自己用,不会影响别人的心情,这样就很有可能发生这样的一幕,有一天你的假期结束,开开心心的回到公司,结果发现你写的的代码都不见了。。。。
3.最好的语言答案
php: java python nodejs,在我面前都是垃圾
java ,python nodejs :请问你工资多少?多少。。。。少。。。。
php:。。。。。。
分分钟结束战斗,
不过我想说:python是最屌的语言,她的胸怀旧入36D一般宽广
4.设计方式:自上而下还是自下而上
其实我也很反感讨论这些上上下下的事情,
自下而上的设计:倾向于领域模型的设计方式,我的习惯是关注三点:模型 行为 数据
模型其实就是业务场景中参与者,行为就是模型要完成那些业务,模型与模型之间要发生那些关系,数据最后落地的方式,需要那些表来支撑这些模型和行为,以及可能会存在的行为
其他的就是迎合需求,设计接口,来调用不同的行为就可以了,保证模型 行为 数据三个点的正确性,中间的代码写的再烂,都有机会掰回来,
自上而下的设计: 迎合敏捷的开发方式,直接根据需求的业务设计接口,在模型方面和行为方面会根据业务需求来,不会刻意追求模型的独立完美和行为的边界,在数据库层的设计看具体设计者的心情,大部分情况都是比较慎重,毕竟改数据库比改代码要复杂的多
如果非要比较的话,前者更加稳重一点,项目越大越优势,不会被复杂逻辑带沟里,小项目的话就会显的很啰嗦,后者是效率流的,主要是要保证迭代的正常,中小项目都适用,大项目会容易把整个架构带偏,最后只能强势维护或重构,如何选择?反正我一直都是选前者,就算是敏捷的团队,也不能阻碍我追求完美模型的心
5.异常的处理的统一
异常是很多新人容易忽略的一个重要话题,总是认为哪有那么多异常,有异常try catch ,打个log,随便返回一个异常到前端就完事了,然后就没有然后,前端不知道发生了什么,后端日志看不到有效信息
先来理一下异常一般分为两种:业务异常,系统异常,
业务异常表示:业务校验中失败的表现,比如登陆失败,库存不足,余额不足,都业务处理中自定义的各种异常
系统异常:空指针,数组越界等,代码引起的异常
业务异常建议在代码中:controller---service---dal---dao,直接向上抛,一直抛到切面位置,交由切面统一处理,记录日志,返回前端明确的异常信息,其中对于业务异常的规范的统一,从code msg desc,要尽量细化,尽可能多的表达异常的准确信息
6.产品经理应该打死还是打残
先打残再打死!!!!
下面是小编整理的一整套系统Java学习教程
最后给大家推荐我的JAVA资料分享群:726272430有免费java学习资料,还有各种趣味案例等,欢迎各位加群!
领取专属 10元无门槛券
私享最新 技术干货