整洁架构发起人Bob大叔:在程序中嵌入SQL是最严重的错误之一

大叔的观点

鲍勃·马丁叔叔(Uncle Bob Martin)@unclebobmartin

SQL 并非设计用于计算机程序。它本是用于打印报表的控制台语言。将其嵌入程序是我们行业最严重的错误之一。

有人问到,不使用SQL,那么解决方案是什么,大叔则认为应该用API来代替SQL。

有人问到,大叔对ORM的态度,大叔的回答是“Ick”,表示不喜欢ORM。

我的看法

关于SQL的使用,我虽然方向上与大叔的观点相同,但不像大叔那么极端,尽可能避免在程序中使用SQL,更有利于代码的可维护性,尤其是在强类型语言中,使用SQL,简直就是灾难,不仅是把多种语言混在一起带来的代码可读性问题,更重要的是丧失了类型检查的能力,这让代码的问题在编译时无法识别,需要推迟到运行时才能发现,这带来了极大的迭代效率损耗。

关于ORM,我则认为它是避免直接使用SQL的必要之解决方案,理由是当我们使用面向对象的实体来表达业务时,要将这些实体持久化,就必要面临Object To SQL的问题,ORM则是这一问题的解决方案。如果按照大叔的观点设计某种API来代替SQL,那么大概率还是需要一种工具来解决Object To API的问题,或者说,这种代替SQL的API,其能力很有可能就是ORM的能力。

这个问题与Clean DDD的关系

在CleanDDD的实践中,仓储是一个非常重要的基础能力,要打造足够适用的仓储,就脱离不开面临ORM还是SQL Helper工具的讨论和选择,至少大叔引发了人们对SQL的一轮新的思考和探讨,其中的一些观点,对于Clean DDD的实践和推广也有很大的帮助。

打个广告

浓缩了完整的DDD实践经验的《一分钟学DDD系列》上架了,点击末尾“阅读原文”或复制地址:https://b23.tv/fcpk9pV

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值