课程咨询 :0731-88220680

长沙Java培训 > 达内新闻 > 如何缩小臃肿的代码?
  • 如何缩小臃肿的代码?

    发布:张_逸      来源:简书      时间:2016-09-27

  • 达内长沙java培训看到Steve Yegge在他特立独行的作品《程序员的呐喊》中写道:“我坚信代码最大的敌人就是体格”。不过他过于自大了,以为这只是像他那样的程序员才拥有的少数派观点;又或者说他过于悲观,以为程序员的世界还在拼代码的肌肉男臆想中。殊不知只要是曾经挣扎在庞大代码库泥潭中的程序员,就不会盲目崇拜代码的大块头。

    可惜,“知行合一”非圣人不可以做到,梦想的光芒常常难以照进现实的阴影。要缩小代码的体格,似乎比减肥还要艰难。软件系统像一条贪吃蛇,吃掉一切功能,最后越变越长,在局限的空间里再也无法做到从容的转折腾挪,最后活活困死。偏偏还有人以能掌控千万级代码的软件系统为荣。——“兄弟不才,做过一系统,代码达到了两千万行,真是一场噩梦啊!”,程序君一边摇头作痛苦状,嘘声叹气,但察其眼角眉间,藏不住的却是得意和炫耀。

    因而,我们一边在愤慨代码日益膨胀的体格,一边又在做着堆代码的增肥工作。软件从来都不是一个人写完的,需求也从来不会稳定不变,于是乎出现了超过数个屏幕的分支语句,出现了大量注释过的代码残骸,于是乎有了拷贝粘贴,程序员渐渐开始降低坏代码的容忍度,开始得过且过。

    代码的臃肿关键还在于分解与去重。Unix大吗?大,而且必须大。但它又很小,因为它以内核形式确立了系统的边界,同时遵循KISS原则,将大功能分解为小程序,每个小程序只能完成一个功能,任何复杂的操作都必须分解成一些基本步骤,由这些小程序逐一完成,再组合起来得到最终结果。分解的一个难题是如何定边界,换言之就是如何做到“高内聚、松耦合”。另一个难题在于组合,即该如何把这些分解的细小功能再糅合起来,形成一个整体。这也是为何Micro Service被鼓吹了多少遍,仍然有人保持观望态度的原因。

    若说掌握分解这门技艺的高手中高手,还得数庖丁这哥们,“彼节者有闲,而刀刃者无厚,以无厚入有闲,恢恢乎其于游刃必有余地矣,是以十九年而刀刃若新发于硎。”眼睛都修炼成了X光,能够透过牛皮看清骨肉经络,以至于能够无厚入有闲,像舞蹈一般变屠牛为行为艺术,举手投足间,潇潇洒洒地把牛给宰了,还挥挥衣袖,不带走一点血。达内长沙java培训想问的是,对软件系统的分解,我们能做到像庖丁那般识破依赖,判断“有闲”之节者,进而做到合理解耦吗?

    去重的根本其实还是分解,粒度可以是函数、类、模块、子系统。程序员需要有洁癖,重复就是最大的dirty,可惜打扫卫生需要付出。写代码是件劳心劳力的事儿,总会有人偷懒的。Deadline又是一把悬在程序员头上的达摩克利斯之剑,在急迫的催促声中,程序员寻找到了心里安慰,因为时间是允许降低质量的最完美借口。——当然,时间也是最残忍的。程序员干的是刀口舔血的生活,出来混,迟早是要还的。程序世界,就是佛家所谓的“因果世界”啊。

    去重的关键并不在于技巧(程序员都不是傻子,只要愿意学,什么技巧不能学会?),而在于勇气和决心。重复是敌人,而且是大块头的敌人,它就这般随意地站着,勾起小指头,傲慢地挑衅着你。而你,却未必有战风车的勇气。是明知必败吗?还是不可战胜?未战先怯,这场战争你已经败了。我见到的诸多遗留系统,重复代码都是这样开始蔓延的。——时间,见鬼的时间,其实大多数时候它都是你举白旗时找来贴脸的遮羞布。

    达内长沙java培训常说程序员要懒,例如要把重复的过程变成自动化,例如不要重复制造轮子,例如竭力少写代码完成更多的事。可惜,我们多数时候把这种懒,用错了地方。懒于打扫,懒于行动,却又不计后果的吃,代码的体格怎么能够减得下来?就看着代码的体格一天天膨胀下去,然后呜呼哀哉吧。

上一篇:如何获得恰如其分的架构?

下一篇:如何用工具让系统变小?

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:01/20

Java--零基础业余班

Java--零基础业余班

开班日期:01/20

Java--大数据全日制班

Java--大数据全日制班

开班日期:01/20

Java--大数据业余制班

Java--大数据业余制班

开班日期:01/20

  • 网址:http://cs.java.tedu.cn     地址:长沙市开福区芙蓉中路一段 476 号建鸿达现代城 9 楼
  • 课程培训电话:0731-88220680     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56