S9T9查看下代码 猛然发现目前的这个代码有点奇怪

原文:S9T9查看下代码 猛然发现目前的这个代码有点奇怪

S9T9业务完成到一定程度,S9T9查看下代码,猛然发现目前的这个代码有点奇怪。奇怪就奇怪在我的model中有很多文件,每个文件都对应数据库中的一张表,然后每个model中有很多是几乎没有什么逻辑代码的。比如:

Image(12)

S9T9太空堡垒




这个原因是什么呢,因为rdb_model这个类实现了ORM,我继承这个类才能使用ORM的那些操作。

但是这个确实让我很不爽,一个神马东西都没有的类为什么要写呢?引申出的一个问题是到底是胖model好呢,还是瘦model好?

不难想象我项目中的代码算是胖controller,瘦model了。即我的model完成了ORM的封装流程,为的就是controller中能更方便使用。说实话,这样controller中的函数写下来是非常舒服的。但是考虑一个问题,这样子是不是违反了DRY原则呢?如果是瘦到只封装ORM的model,那么一定可以闭着眼睛说,controller中一定有很多会冗余的代码。这确实是不好的做法。controller中的冗余可共用的代码并没有抽象出来,这当然会造成日后的代码困扰。

那我们退一步,如果model不再那么瘦呢?我们把基础的一些方法都放到model中,但是我们还是坚守着一个表一个model的方法。那么就会将下面这样的方法放到model中:

Image(13)

问题就是,这里势必要使用comment_model了,这个model是comment表的映射,它的内部却是任何功能都没有实现。

如果你会说这样其实没有什么问题,那么下面问题来了,现在访问量上来了,我们不从DB中取出数据了,我们改成从DB中取出数据,存入缓存,然后下次再去缓存中取数据。这时候的问题来了,缓存是加在controller中还是model中呢?

这个观点各执己见,从领域驱动模型来说,缓存是不属于领域模型范畴的,它和领域数据逻辑没有关系,它属于应用层范畴。但是从MVC观点来看,Model层是数据获取的抽象,controller层只管理数据的重新组织和连接,数据从哪里来并不属于controller管理范畴。所以呢,数据从DB中来还是从Cache中来,这是Model层应该管理的。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值