文档章节

编程中的各种闲谈

s
 seal_90
发布于 2018/10/18 09:06
字数 1010
阅读 19
收藏 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
【杂谈与乱码】学了编程后,重新看世界

有句二三十年前的古话,工具决定思维。 说得可真棒。 闲谈? 开始我们以直观的肉眼看世界,只知道所见即所得,这又点像最早期的一起低级语言直接操作机器。 学习过语言和逻辑之后,面向过程的...

蒸发杰作
2018/12/11
0
0
闲谈团队的代码质量

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

没故事的卓同学
2017/09/17
0
0
晶振不集成到IC内部,为什么?

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

dp29sym41zygndvf
2017/12/24
0
0
闲谈简单设计(KISS)疑惑

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

zting科技
2017/01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Git代码防丢指南

我们在日常使用Git的过程中经常会发生一些意外情况,如果处理不当,则可能会出现代码丢失的假象。本文将针对IDEA&Git日常开发中的一些场景,为你层层拨开迷雾,解析常见的错误及其发生原因,...

joymufeng
6分钟前
0
0
传统IDC部署网站(三)

16. chown命令 chown 用来更改一个文件或者目录的所有者护着所属组 -R 级联更改一个目录下所有的目录和文件 chown user1:users 1.txtchown user1.users 1.tx useradd 添加用户的命令 user...

miko0089
17分钟前
0
0
来玩一下Java设计模式之命令模式

wiki上的描述 Encapsulate a request as an object, thereby allowing for the parameterization of clients with different requests, and the queuing or logging of requests. It also al......

小刀爱编程
18分钟前
0
0
Optional类的简单了解

import java.util.Optional;/** * @author hanliwei */public class OptionalTest { /** * Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返...

wind2012
26分钟前
0
0
如何写出好的单元测试?

大家都知道,开发软件的时候为代码编写单元测试是很好的。但实际上,光有测试还不够,还要编写好的测试,这同样重要。 要做到这一点,考虑遵循一些固执的原则,对测试代码给予一些关爱: 1....

程序猿拿Q
35分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部