正文 第5章 什么叫防御,性编程啊?
然后看着控制面板.....没有异常报错。
打开网页,输入地址,用鼠标点击功能,一切正常。
如此这般,几个功能全部搞定。
陈默活动了一下手指,“其实正常流程应该先写单元测试,再实现功能,不过一是时间有限,二是这点程度还不需要我写单测。
这样你这个项目的工作就完成了,这几天应该可以不用加班了。”
齐萌萌亲眼看到代码一点点丰满起来,聚沙成塔,充满了玄奥的规则,脸上充满了敬畏。
这些代码在师父的手里仿佛一个個听话的小朋友,令行禁止,异常听话。
原计划她一周工作量的功能实现,在师父的手里没坚持过一刻钟。
看了看时间,13分14秒,这就是她与师父之间的鸿沟,
“刚才这些,其实有一个统一的名称,叫防御性编程!”
不知道是否错觉,齐萌萌感觉师父说到最后莫名顿了一下。
“什么叫防御性编程啊?”
陈默坐回自己座位,冲对方勾了勾手,示意过来,
“防御性编程是一种细致、谨慎的编程方法。
它要求程序员在编写代码时预见可能出现的问题,并提前采取措施来避免这些问题。
这种编程习惯更加注重错误的预防和控制,以减少可能出现的灾难性后果。
刚才的代码示范是名门正派的用法,正所谓道高一尺魔高一丈。
接下来我所教你的乃是防御性编程的邪道用法。
其实原来是没有这些的,随着公司与员工之间的博弈加剧,往往后者处于绝对的劣势。
一些前辈就想到了此招,那就通过编写晦涩难懂的代码,令自己手里握有一些筹码,即便自己最后被裁,也要让自己负责的那些代码是不可维护的!
从而在一定程度上提升自己的‘不可取代性’,达到让公司投鼠忌器的目的!
要不看你是我徒弟,这招我一般不轻易示人,因为一旦施展,必将引发严重的后果,如同七伤拳,伤人更伤己。
不过为师目前功力深厚,已经可以无视这种副作用了。”
说着陈默把自己之前负责的主要功能模块代码找出来,陷入了沉默。
此时的他再看自己之前所写的这些代码,简直没眼看,只是为了完成功能而完成功能,毫无优雅可言,比齐萌萌那坨代码能强上一些,但也有限。
过了一会,陈默方才把屏幕稍微向齐萌萌那边偏了偏。
这一次陈默全功率开动,双手噼里啪啦快速敲击着键盘,速度快的都能看到残影,这是丰富的经验和年轻的肉体融合才具备的功力。
这让他很是满意现在的状态,年轻真好,随后就听到齐萌萌的压抑不住的惊叹,
“哇,师父,你好快.....”
这可不兴说.....
陈默眼角抽了一下,手中原本行云流水的敲击声瞬间顿了一下,速度稍微降档....
原本的代码被改的面目全非,当然陈默不是跟拼积木一样在上面不断累加,而是怎么复杂怎么来。
循环嵌套,高级语法,在代码中封装了一层又一层“防盗门”,涉及范围包括不限于代码、配置文件、数据库.....
原本二十行就能实现功能的代码,短短几分钟就极速膨胀了近千行,别看多,乍一看充满了代码的美感,如果仔细一读会让人头皮发麻,技术越高的选手越容易陷进去,不可自拔。
相当于把原本一两句话能说清的事情,水上几十章,比如山坡上突然冒出了一伙山贼,定睛一看竟是梁山一百单八将,他们分别是“宋江、吴用、卢俊义、林冲.....”名字念完再念绰号,然后背景羁绊全部整上....
让人看上一眼就忍不住骂娘,简直不当人子。
在写代码的过程中,陈默每写下一小段,都会跟齐萌萌解释其含义,深入浅出。
而齐萌萌看着面前的这堆代码,在师父的鬼斧神工下,不断拆解、崩散、融合、重组,变成了一点都看不懂的样子,脸上满是震撼。
这时一个员工从旁边经过。
原本已经路过陈默工位的他耳朵微微一动,咦了一声又折返了回来,随后在后面津津有味地看了起来。
【陈默敲代码的速度见涨啊,都快赶上我了,难道扇老板还有这好处?】
【哎,这些已经测试完毕的代码为什么要动?】
【这是在优化?不,这改动程度已经是重构了,现在重构?都快验收了这不是没事找事么?】
【嗯?这语法还能这么写?倒是学到一招,没白看。】
【不过怎么看上去像反向重构,越来越复杂了,这样还能跑通么?奇怪.....】
这哥们脸上的神情从开始的好奇慢慢变为费解,随后听着陈默的讲解,表情在疑惑和恍然之间来回切换,好像一个钉在十字路口的红绿灯.....
半个小时后,当陈默把自己之前的代码核心逻辑全部重构一遍,程序开始执行,没有报错,几分钟整个流程点了一遍一次过。
“这就是所谓的防御性编程,看明白了?”
齐萌萌瞪着懵懂的大眼睛,情理之中的摇了摇头,有看没有懂。
陈默欣慰的点了点头,“看不懂就对了,说不定过几天我来看我写的代码都看不懂,这就是眼中有码心中无码的至高境界。
所以只能祝王德发好运,希望后续这几个功能验收的时候不要有改动,否则.....”
“否则怎样?”
陈默双手作开花状,嘴里boom了一声,
“艺术就是爆炸!”
系统能不能验收通过才不是她一个实习生的关注点,齐萌萌有一点比较好奇,
“师父,你刚才敲代码,不需要思考么?一气呵成,简直....”她一时想不出什么形容词,最后只能竖了个大拇指。
“我一直在思考啊,最开始停了一分钟我就在想大概代码结构该怎么去构建,然后等实现的时候手里敲这段代码的时候,脑海里面已经提前预判想下一块代码了,跟卖油翁一样,唯手熟尔。
这都是你往后要学的地方,说多了伱也记不住,行了,今天为师灌输给你的东西有点多,你先消化一下。”
陈默拿着杯子准备去打水,起身发现不知道何时身后一步不动杵着个人,
宛如雕像。