时间:2020-7-3来源:本站原创作者:佚名
白癜风治疗方法哪种好 https://m-mip.39.net/nk/mip_4654498.html

本文授权转载自有关SQL

禁止二次转载

大家好,我是老表

阅读文本大概需要6分钟

今天的小C很不在状态。昔日的她,一大早肯定不会愁容满面,似乎像是星巴巴没有喝够的样子,兴奋不起来!11:30了,很少听到她HHKB落键的清脆声,一定是遇到难题了!

“怎么,今天的热焦玛少了点劲儿嘛,感觉?”我走近了小C。

“L,谁面对着满屏的SQL都会提不起精神啊。何况这近行的代码,怎么看得过来嘛!看了中间忘了开头,看到结尾,前面的全忘光了,好烦呀”小姑娘抱怨起来也是毫不拖泥带水。

“哟,恭喜你,遇到这么极品的sp啊。在我的印象里面,经历了两次重构之后,上千行的代码,就那么几个,今天被你遇到了。我看看是哪个”

“原本我以为很简单的一个AddUpdate,谁想逻辑这么复杂,牵扯的表也太多了,其中几个表还有上百个字段,这都没法看了”小C的鼠标满屏的乱走,看得我度的眼睛,有些吃力。

“你这一行一个字段,是你自己设置的吧,其实不需要那么格式化,反而更简单。你看啊,一个Insert被几十个字段隔成了两屏,容易造成思维停顿。两行搞定的事情,做复杂了。还显得代码量大,失去耐心。”

“那我还原成原先的格式,也有近多行啊,还是多”

“这阅读源代码啊,是有技巧的。我可以分享三点给你。分别是,通读,联想,批评。”

“第一点,通读,非技术性的通读。首先告诉自己,一遍读完就能通晓行代码细节,是不可能的事情。读代码前,耐心先行。接着就是开始第一遍的阅读。此时的代码走读,我们不停留在具体的技术末节上,比如unpivot的语法是怎么样实现的,为什么有里三层外三层的嵌套,为什么这里用了动态SQL去拼接。再比如,XML的节点铺设,为什么要这么定义,共有多少层。这些留在最后。”

“我们在走读代码的时候,尤其是第一遍,首先要理清的是业务的数据流,比如订单是如何触发的,分别涉及到哪些主体,人,物,财,时间。知道这些数据流分别存在哪些表里,存储的先后顺序是什么,会记录哪些日志。我们的sp逻辑结构相对简单,一个事务一个存储过程。所以第一遍,通读,越快了解所有涉及到的业务过程,最重要。你也可以在手边,画画流程图,帮助记忆。”

看着小C若有所思的眼神,分明能感觉到她脑子里抽象的拧巴,因此顺手我画了一张上面的流程图。“第一遍走读代码,你能清晰的画出类似上面的图,知道这些数据存在哪里,就足够了。”

“嗯,原来是这样,难怪我老是连接不起来,看过了,脑子里留不下印象!那第二点呢?”

“第二点,需要联想,也就是想象力。看完第一遍,不要急着看第二遍,就在脑子里,回想第一遍的过程。把你认为创建一个订单需要记录的信息给标出来,尽可能详细的在流程图上标准细节,就好比人,在什么时候需要记录人的信息,需要检验人的信息;再比如货,什么时间段,要检查货的库存,要记录货的哪些属性,单价还是SKU,怎么更新货的库存,更新失败了怎么办?”

“如果你看到长篇的SQL,还只停留在脑子里,不靠谱。工作记忆永远只有15分钟。读完一遍后,你被叫去开个会,回来你就可能记不清了。所以及时的倾倒出来你刚才读到的SQL,多问问自己数据是怎么流转下来的,画好流程图,标准自己的想法,越清晰,问题越多,越有利下一遍的阅读...”

"我知道了,我知道了,就是带着问题,主动去寻找答案!"

“理解到位,就是这样。给自己找问题,千万别一遍看完代码,什么都没留下来。接着,你可以去阅读第二遍,第三遍,甚至是第四遍了”

"那还有第三点呢?"小C似乎来劲了。

“第三点最重要,批评。如果你对读到的代码,没有任何要抱怨,没有任何疑惑,那说明还没理解到位。当你看到这些代码,你认为嗯,这段写的很好,这段写的在理,都是这些溢美之词,那完了,你没深入。你可能对unpivot,crossapply,openXML,OffSet读到真正实战版代码而感到兴奋,觉得这段sp就写的很好,那对SQL的认识就太肤浅了。”

“新闻界,会有很多评论家,对重大新闻做二次剖析,比如曹林,《时评写作十讲》的作者,擅长对每篇新闻做双面解析。既讲述原新闻作者的报道手法,也评价原作者的目的与动机,最后还补充自己的观点,非常有意思。”

“在我们编程这个圈子,也有很多书,专讲这方面的。我给你推荐几本吧,《编程珠玑》,《CLRViaC#》,尤其是SQL数据库方面,《数据库索引设计与优化》,《Oracle优化日记》,《T-SQLQuerying》,《T-SQL性能调优秘籍-基于SQLServer窗口函数》”

“这些书,非常基础,我自己看过不止一遍。可以快速帮你提高内功。且,书的优点在于,作者就像是代码评论家一样,告诉你为什么SQL或者代码这么写,不如那样写来的高效,其中的原理是什么。这些都是你在分析具体代码时,可以学到的真正有用的东西。我们应该在任何一段SQL中都找到可以学习的地方,最好是找到这段代码的设计弱点,比如子查询嵌套太多,不简洁;比如筛选条件不够优化,需要代码重构,这就是第三点,批评的实质。”“又推荐书啊,上次推荐的还没看完。”“书在用时,方恨少。”完

大家好,我是老表觉得本文不错的话,转发、留言、点赞,是对我最大的支持。

每日留言

说说你读完本文感受?

或者一句激励自己的话?

(字数不少于15字)

怎么加入刻意学习队伍

点我,看文末彩蛋

留言有啥福利

点我就知道了

想进学习交流群

备注:简说Python

预祝大家新年快乐

2小时快速掌握Python基础知识要点。

完整Python基础知识要点

Python小知识

这些技能你不会?(一)Python小知识

这些技能你不会?(二)Python小知识

这些技能你不会?(三)Python小知识

这些技能你不会?(四)近期推荐阅读:整理了我开始分享学习笔记到现在超过篇优质文章,涵盖数据分析、爬虫、机器学习等方面,别再说不知道该从哪开始,实战哪里找了Pandas中文官方文档:基础用法6(含1-5)觉得不错就点一下“在看”吧
转载请注明原文网址:http://www.helimiaopu.com/jsyy/jsyy/7755.html

------分隔线----------------------------