85
           【代码的辫子】 

早年间的程序像极了前清遗老的辫子,拖在脑后足有三尺长。若见那满屏代码首尾相衔,变量名如蝌蚪般游过三十行不见断句,定是某位"国粹"派的手笔。这般写法倒似旧时裹脚布,外人瞧着是精雕细刻的绣工,待到要拆线重缝时,方知每抽一根丝都要带出血肉来。某夜见后生调试,十指在键盘上翻飞蝶如,忽然对着屏幕喃喃:"这函数竟比《石头记》章回还长",说罢竟把茶碗往桌上一顿,惊得窗外的野猫都窜上房檐。

           【庖丁解牛录】

函数之道,在分筋错骨。上等匠人见整牛不是牛,见的是皮肉间天然的沟壑。曾见人写图像处理,硬将灰度转换、边缘检测、噪声消除绞作一团面糊。我劝他持利刃剖分,他反诘:"刀锋过处必有损耗,岂不误事?"三日后他欲添新滤镜,却见旧代码如老树盘根,改一处则百处生疮,终究要连根掘了重栽。方知模块化不是损耗,恰是给每块骨肉留足喘息的空隙。

          【变量的野狐禅】

局部变量最似深山野狐,虽在洞口布下结界,仍要提防它化作美人惑人。某项目组二十余人共修栈道,偏有人贪捷径,把变量作信鸽四处放飞。待到雪夜查错,但见百十只灰鸽在函数间扑棱,寻一根染疫的羽毛竟比大海捞针更难。终究是老师傅持桃木剑作法,将全局区里的精怪尽数封入黑匣,又在每个函数门前悬起照妖镜,自此夜半再无鬼火乱窜。

          【指针的投名状】

参数传递好比江湖拜码头的规矩。传值如递名帖,主客分明;传址似纳投名状,从此肝胆相照却要防背后刀。某日见少年郎传指针如撒传单,十处函数共改一隅内存。忽有日系统暴毙,众人围看dump文件,只见那指针早化作百足蜈蚣,首尾相咬,竟辨不出哪一截才是真身。老师傅抽着旱烟叹道:"内存泄漏不是病,乱传指针要人命"。

          【递归的家国事】

递归算法最见编程者的胸襟格局。拙劣者如败家子挥霍栈帧,优良者似世家大族开枝散叶。曾见人写二叉树遍历,本应三行可毕的递归,偏要在每层栈里埋下打印语句,好比在祖宗祠堂每块牌位下偷藏银元。待到栈溢出时,满屏报错如孝子贤孙哭丧,竟不知是哪个不肖子孙捅的娄子。

           【重构的剃头令】

模块化不是绣花枕头,是给代码动外科手术。老代码如晚清遗老的辫子,剪起来总要见血。某次接手祖传代码,十万行如乱麻缠作一团。我先备下三件利器:单元测试作止血钳,版本控制当手术台,设计模式化做柳叶刀。每拆解一个函数,便似给病人接续断骨,三月后方见那代码竟能站立行走。学徒问痛不痛,我指着版本库里的七百次提交笑而不语。

分类: C 语言📖 标签: C 语言📖

评论

暂无评论数据

暂无评论数据

目录