文档章节

编程中的各种闲谈

s
 seal_90
发布于 10/18 09:06
字数 1010
阅读 17
收藏 0

service 是否一定要定义 interface

在学习ssh(spring, struts2, hibernate)时,老师教在 service 层要定义接口,再去实现此接口,方便解耦。
在 spring 框架中,自身定义了很多接口,并且有不同的实现来完成不同的任务,实现了很多灵活的设计。
那么我们定义的 service 是否也会被用来被多次实现呢?没有,在我编程的这几年一直就是一个 service 接口只实现一次。
那么为什么我们还坚持需要 service 接口呢?并且在使用 ide 的时候不能直接定位到方法内容也是个很尴尬的问题,何况还得去维护两个类呢。
所以近几年我编写的框架中抛弃了 service 接口的定义。
当然这并不是说接口没用,例如我通过配置使用不同的service实现来实现不同业务规则。在目测只有一个实现类的情况下不认为添加接口能带来灵活。

Entity 是否要跟模块一起

近些年接触的项目以及自己实现的都是这样的结构,定义一个功能模块包,包下面放 controller, service, entity, dao 等包。
大多数的功能在本模块包定义的类中都能够实现,但问题是总有一些功能是需要其他模块包中的 dao, entity 的。
复杂的业务逻辑会出现更多这种情况,有时看到会出现 service 调用,之前认为 service 调用没什么,最近遇到一个项目 service 调用后都很难找到业务。
开始思考这种实现是否合理。service 之间调用是不应该的,一个 service 应该完成一个完整功能,而出现在两个 service 去实现子功能那需要考虑是否应该重新设计 service。
dao和entity 是整个项目可以访问的,处理所有实体或者数据库的所有对象,意味着任何一个功能都应该有权限来访问所有的 entity,这块是否应该独立出来呢?
人们或许首先想到的是同一个文件夹下文件多,那么慢慢被许多人接受的 mybatis 的 mapper 文件放在 resource/mapper 文件夹下,也感觉越来越适应了。

如何获取当前用户信息

在许多项目中,获取当前用户是通过session.get("XXXX") 当然这个方法或许被封装到某个实体类中来获取,大多是在controller中获取然后传递到service层做业务处理。
当然也看过写到 service 层获取信息的,这显然是不合适的。
spring mvc 会解析请求数据,然后给参数赋值,那当前用户信息能否采用这种方式获取呢?给spring mvc 一个解析器就可以。

关于吐槽别人代码

经常看到有吐槽别人代码的,有时我也会,通常因为代码写的非常飘逸,设计差等原因。
但是想想吐槽完之后知道怎么去改善吗?或者说当时头脑一想应该如何处理,但是这个“想法”真的就是真的好方式吗?
当开启下一个项目的时候,你会将自己以前在吐槽别人代码时产生的好想法加到自己的项目中去吗?还是说以前项目就是这么做的,我还得沿用?
积累自己的好想法,应用于之后的编码及下一个工程。若是在本项目无法做出的改进,那么下面的项目就应改变,沿用以前只会让下个人再来吐槽你。

© 著作权归作者所有

共有 人打赏支持
下一篇: 有趣的事
s
粉丝 6
博文 12
码字总数 12099
作品 0
济南
私信 提问
闲谈Tomcat性能优化

Tomcat在各位JavaWeb从业者常常就是默认的开发环境,但是Tomcat的默认配置作为生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. 幸好Tomcat还有很多的提升空间.下文介绍一下...

ParkJun
2016/02/23
2.3K
13
晶振不集成到IC内部,为什么?

早些年,芯片的生产制作工艺也许还不能够将晶振做进芯片内部,但是现在可以了。这个问题主要还是实用性和成本决定的。 芯片和晶振的材料是不同的,芯片 (集成电路) 的材料是硅,而晶体则是石...

dp29sym41zygndvf
2017/12/24
0
0
闲谈团队的代码质量

定义代码质量 首先当你开始意识到项目里代码质量差的时候,恭喜你已经有了代码审美。这是推进编程水平的重要的一步。很显然,如果你不知道什么是差的代码,你就写不出好的代码。写不出好的代...

没故事的卓同学
2017/09/17
0
0
闲谈简单设计(KISS)疑惑

忙碌了一年了项目又到了交付了,虽然项目能成功上线(因为还有维护支持的团队)。但是个人从技术上看,这是一个不那么成功的项目,因为后期艰难的修复bug,添加feature。这与简单设计有什么关...

zting科技
2017/01/10
0
0
设计模式-依赖倒转模式(面向接口编程)

闲谈 在公司工作了快一年了,发现以前的重点是放在语言上的(C/C++),回过头来看看,发现语言只是一种工具,实现我们产品的一种实现方式。一个好的产品,在于它的设计框架、在于它的扩展性,...

沙米笔记
2016/05/15
207
0

没有更多内容

加载失败,请刷新页面

加载更多

phpstorm xdebug 配置

xdebug方便了调试代码,比起一个一个地方的打印结果还是debug看的更明白下面介绍下maxOS系统下的debug配置 下载 https://xdebug.org/download.php 点击红线部分进入,粘贴phpinfo()信息推荐适...

被猪拱了的JAVA
24分钟前
2
0
Golang学习笔记(1)

基本知识 golang的文件格式以go结尾。 运行方式 go run main.go 用于开发调试使用 编译成二进制文件 go build main.go 会生成一个可执行的二进制文件 变量 变量定义的形式 Golang的变量定义有...

ExtreU
37分钟前
1
0
基于Kafka构建事件溯源模式的微服务

概要 本文中我们将讨论如何借助Kafka实现分布式消息管理,使用事件溯源(Event Sourcing)模式实现原子化数据处理,使用CQRS模式(Command-Query Responsibility Segregation )实现查询职责...

架构师springboot
44分钟前
1
0
git上传项目步骤

https://blog.csdn.net/m0_37725003/article/details/80904824

fame_yao
44分钟前
1
0
NOOBS自定义安装多系统

一、预置条件: 宿主系统是win10_x64 virtual box 虚拟机,安装了centos7 树莓派的系统安装工具:NOOBS_v2_9_0.zip,镜像文件 二、根据镜像文件生成boot.tar.xz 和root.tar.xz 1、设置共享目...

mbzhong
55分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部