蓬生麻中,不扶而直

做为一名非专业程序员,纯粹抱着一种探索未知,拓展边缘的心态,我加入到这次「软件匠艺:代码重构的艺术」的分享活动中,真的可谓是收获满满。

我进入会场的时候,当天的分享者Tyler张瑞正在和其它极客们热情的讨论,始终保持着谦和的微笑,看他们饶有趣味的谈论着,我感觉到他们对代码,对这份事业,对这门匠艺有着发自内心的热爱。

于是我问自己,何为匠艺?

何为匠艺

首先既然称之为艺术,它必定是人类共通的,只要是对生活有一定的沉淀,对自身所热爱的领域有一定的思考和感悟的人,不论是否同属于这个行业,一定有可以产生共鸣的部分。那是经过了高度的浓缩和提炼,和人类本能紧密链接,跨越时空,又直抵心灵深处。产生深远影响力,又能够产生惊人的创造力的美物。

而如何能够达到匠艺这个层次,一定是经过热情、汗水、心无旁骛的坚持、刻意练习,超越自我设限,越过一道道关卡,再迈过一道道心坎,走过了千山万水仍然不忘初心,始终眼望着曾经的那份执着的目标,永不放弃拼搏的这群人才能够企及的圣土。

经过一天的工作,仍然相聚在软件匠艺的极客们,就是这样的一群可爱的人。

优雅的代码

对这次分享,我印象最深的则是,在讨论中出现了多次的「优雅」这个词。

优雅的代码,是编程大师对艺术的诠释

开篇的这句阐释,让我对重构的艺术产生了一种好奇,也产生了一种美感和向往。我非常想仔细的聆听,去领略何为优雅的代码。

第一轮小组讨论,我想到了乐高、想到了系统,带着我的感受去表达了我对重构的理解,“在不影响系统功能和输入输出的情况下,对模块内部的结构进行调整”,小组中的其它高手们,又补充了几点,“目的是为了解决性能缺陷,减少冗余便于更好的重用,更加方便易读易于维护”。在讨论中,我感受到了学习的乐趣,也感受到了参与的成就感。

紧接着,Tyler引用了ThoughtWorks公司的首席科学家Martin Fowler两句话,凝缩了重构的概念:

“对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。”

“使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构”

我内心不得不对这种方式拍手叫好。参与,思考,观点输出,观点融合,提炼总结。这样的分享方式,激发主动感提高成就感,又让大家互相深度接触,犹如一场智慧的盛宴,让人印象深刻。我感觉我已然站在重构大师的视角上,在理解重构这门艺术。

重构的艺术

Tyler从What入手,接下来又从Why引发新的一轮思考。

为什么要重构

改进程序设计

使软件更容易理解

帮助找到 Bug

提高编程速

思考的开口一经打开,就如滔滔江水,连绵不绝。

由此我又想到,How,如何组织开展重构?如何在保证质量的情况下进行重构?如何将优秀的重构方式和代码习惯在组织内部传播和扩散?

Who,谁来主导重构,谁来实施重构?

幸运的是,后来在讨论中,这些问题都一一解开了。

任何事情都没有绝对,即便理论上讲重构是一门艺术,即便重构的确是一个非常优雅的事情。在讨论中,极客们不愧是实操高手,将理论的探讨再次落地。有观点认为,重构也要看投入产出比,当一段代码不常被用到,或者不再是核心价值部分的时候,就需要衡量是否需要投入精力和时间去重构它。

重构也分了好几个层面,小到方法抽取层面,流程梳理,大到数据结构,分层,接口抽象。也要使用不同的实施策略。

上升到艺术层面,我特别喜欢「坏味道」,「依恋情结」这两个比喻。这种思维方式,把代码看成了生命体,有灵性的主体。这是一种富有智慧和中立的视角,并不是如计算机二维码0、1之间那种非黑即白的冰冷。更不是机械的把代码的问题看作是好代码该留下,坏代码该清理掉的那种对立和执拗。坏味道,它只是因为有了生命,所以有了新成代谢,它只是生命的副产物。我们要保留这份灵性和生命的存在,就要接纳并注意到它的副产物——坏味道。这种视角和表述,充满了人文的关怀和温情。坏味道,不是一刀切,而是首先带着包容和爱意去接纳,然后尽量往好的方面去引导。

坏味道

重复的代码:倘若太多的重复代码,如果这段代码出了问题,需要修改多处,增加了维护成本。

过长的函数:过长的函数,也不利于阅读和维护。

依恋情结:一个类过多的使用其他类的方法和内部数据。它让我想起了人格心理学里面的依恋理论,这种视角,把代码看成一个独立的个体,健康依恋模式的个体,才有健康的人格,才能发挥最好最大的效用。而过度依恋的个体,不仅不能发挥自我的效用,还会成为他人的负担。

过多的注释:注释本身是一种香味,但过多的使用使它成为一种除臭剂,说明注释掩盖下的代码已经变成了坏味道。说白话,就是代码不易读,才需要大段大段的注释。

蓬生麻中,不扶而直

软件匠艺的这个空间中,时间仿佛过得很快。在极客们的主动、热情和投入的心流状态感染下,产生了一种超越时空的凝聚力。我不是程序员,也没有很厉害的编程技术,但是我不仅没有感受到格格不入的不适感,更没有任何枯燥乏味的感觉。相反,处处都是乐趣,时时都有惊喜。

闭上双眼,深吸一口气,用心去感受,仿佛可以看到一个个有趣的灵魂,拧成一股蓬勃之气,不断跃升,一飞冲天。

这种高能量状态从何而来?

著名的人本主义心理学家,马斯洛曾经在人类激励理论中提出人类的需求可分为五个层次,分别是:生理需求、安全需求、社交需求、尊重需求和自我实现需求。在软件匠艺这个场域中,我感觉生理需求、安全需求已经变得无足轻重。社交需求、尊重需求得到了充分的满足。而“自我实现”的需求成为焦点。一个个高智慧高勤奋的个体在这种高层次追求的过程中,毫无保留的分享,碰撞,充满欣喜的互相欣赏。

水就湿,火就燥,物各从其类也。《荀子》中说,蓬生麻中,不扶而直。说的就是常常与高人往来,你会发展自己的学识,境界也会不断提升。

这里的每一个人对自己所从事的事业的热情,甚至是狂热,软件匠艺的活动让我从感性上直观的感受到什么是极客。比在百度上搜一百遍极客的定义,更加有意义。

怎么样?你渴望成为极客吗?你希望读懂极客吗?来软件匠艺,近距离感受吧。

软件匠艺

4月3日晚,来自ThoguhtWorks的高级咨询师张瑞「软件匠艺」活动上分享了「代码重构的艺术」,向大家介绍了在一线项目中,他将代码重构作为一项艺术来实践的丰富经验。现场气氛热烈,大家各抒己见。

「软件匠艺」社群,旨在传播匠艺精神,通过定期邀请一线编程「匠人」,分享好的「工作方式」和「习惯」,以帮助程序员更加「快乐」、「高效」、「优雅」地编程。

如果您也渴望精进,欢迎您加入「软件匠艺」,与优秀的学习者共同成长!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180408G19LQF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券