编程要有灵魂

最近有一位大神review了一个工程后说,这些代码没有什么灵魂。我不禁反思,什么是代码的灵魂?

通常说一个人没有灵魂,那就如同行尸走肉,毫无生机,只能机械的行动。代码没有灵魂势必也如同枯槁,没有风格,没有创意,没有思考。编程有几种境界,初级阶段只知道语法,把编程当成一种工具或手段,实现功能为主要目的,写代码的时候直来直去,典型的情形就是用if/for/while实现了全部的功能,查询就遍历,新分支就if,循环就while。用最普通直接的逻辑满足功能的需求就算完事。这种编程也不可能有什么风格,要么写出来一堆函数,要么写出一堆关系凌乱的类,是最没有灵魂的编码。中级阶段有了一定的工程经验,知道代码该适应未来需求的变化,于是开始套一些设计模式,初步掌握了抽象和封装的思想,开始考虑编码的风格,最主要的是开始构思工程的结构、脉络和趋势。最高级的状态势必经历了充分的历练,真正打磨过至少一个项目,于是编码如同创作,会综合考虑各种因素,在一堆的矛盾点中找到奇妙的平衡,用最高效精炼的方式实现最优雅美妙的作品。读这种代码如同读一篇文章,或者看一个电影,就是一种享受,不时有些小细节给你耳目一新眼前一亮的感觉。这种高级状态应该就是有灵魂的编程了吧。

如何让自己的编码有灵魂?

首先要有风格,最基本的,编码要赏心悦目,实现这一点不难,有很多公开的编码规范都可以帮你实现这一点,只要严格遵守。就像三段论式的文章一样,不至于太糟糕。而且风格里面其实有很多到了中高级阶段才能理解的思想,先严格按照风格来,如同临摹一样,时间长了,总能有一些心得体会。俗话说,熟读唐诗三百首不会作诗也会吟诗。编码也是一样的,先模仿,不用着急创新,能模仿明白,才能站在巨人的肩膀上突破创新,到那时的创新才是创新,否则费老劲儿创出来的只是对自己而言新的东西,却不是真的“新”东西。

其次要有创意,同样的功能,有些设计如同流水账,平铺直叙,有些设计另辟蹊径,结构上的变化让整个设计简洁清晰,有设计感。什么是设计感?就是那种能感觉到上心了的实现。使用的人能快速看到对外的接口和使用方法,维护的人能清晰的知道代码的逻辑和查问题的方式,开发的人能清晰地知道套路和边界。大家经常说的“优雅”不是那么容易达到的状态,反复的琢磨和重构才可能达到最优,创意的灵光一现往往是基于反复的失败和总结之后产生的。

最后要有思考,虽然要有创意就必须有思考,但是我觉得还是有必要专门强调一下思考,这是对于编程这个特殊创作的特殊要求。编程是要面向商业化的,不要以为你的机器可以拥有无限的资源,不要以为消耗的一秒钟不足为道。细节决定成败,每个细节能节约一些时间、计算资源、带宽,或者能阻止一次异常,避开一个潜在的bug,都是有巨大的商业价值的。多思考一下,有没有更好的数据结构,有没有更好的算法,有哪些边界条件?每次思考都帮助你实现质的提升。大学教给你那么多计算机基础、数学和建模能力,也是需要在这种时候发挥作用的。

当然也不是每一次编程都能达到这种状态,前面也说过,工程中有很多的矛盾点,时间成本就是其一,项目往往不会给你太多的时间去打磨,所以如我在讲团队的文章中所述,团队中必须要有资深的leader来带领大家快速地实现这种目标,如果没有,那就要不断的反思优化和重构。既让产品越来越有灵魂,也让团队越来越有灵魂。时间花在更有意义的事情上,做出来的东西有价值,越来越有成就感,个人和团队都能有不断的成长,是十分宝贵的状态。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355