做为一名非专业程序员,纯粹抱着一种探索未知,拓展边缘的心态,我加入到这次「软件匠艺:代码重构的艺术」的分享活动中,真的可谓是收获满满。
我进入会场的时候,当天的分享者Tyler张瑞正在和其它极客们热情的讨论,始终保持着谦和的微笑,看他们饶有趣味的谈论着,我感觉到他们对代码,对这份事业,对这门匠艺有着发自内心的热爱。
于是我问自己,何为匠艺?
何为匠艺
首先既然称之为艺术,它必定是人类共通的,只要是对生活有一定的沉淀,对自身所热爱的领域有一定的思考和感悟的人,不论是否同属于这个行业,一定有可以产生共鸣的部分。那是经过了高度的浓缩和提炼,和人类本能紧密链接,跨越时空,又直抵心灵深处。产生深远影响力,又能够产生惊人的创造力的美物。
而如何能够达到匠艺这个层次,一定是经过热情、汗水、心无旁骛的坚持、刻意练习,超越自我设限,越过一道道关卡,再迈过一道道心坎,走过了千山万水仍然不忘初心,始终眼望着曾经的那份执着的目标,永不放弃拼搏的这群人才能够企及的圣土。
经过一天的工作,仍然相聚在软件匠艺的极客们,就是这样的一群可爱的人。
优雅的代码
对这次分享,我印象最深的则是,在讨论中出现了多次的「优雅」这个词。
优雅的代码,是编程大师对艺术的诠释
开篇的这句阐释,让我对重构的艺术产生了一种好奇,也产生了一种美感和向往。我非常想仔细的聆听,去领略何为优雅的代码。
第一轮小组讨论,我想到了乐高、想到了系统,带着我的感受去表达了我对重构的理解,“在不影响系统功能和输入输出的情况下,对模块内部的结构进行调整”,小组中的其它高手们,又补充了几点,“目的是为了解决性能缺陷,减少冗余便于更好的重用,更加方便易读易于维护”。在讨论中,我感受到了学习的乐趣,也感受到了参与的成就感。
紧接着,Tyler引用了ThoughtWorks公司的首席科学家Martin Fowler两句话,凝缩了重构的概念:
“对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。”
“使用一系列重构手法,在不改变软件可观察行为的前提下,调整其结构”
我内心不得不对这种方式拍手叫好。参与,思考,观点输出,观点融合,提炼总结。这样的分享方式,激发主动感提高成就感,又让大家互相深度接触,犹如一场智慧的盛宴,让人印象深刻。我感觉我已然站在重构大师的视角上,在理解重构这门艺术。
重构的艺术
Tyler从What入手,接下来又从Why引发新的一轮思考。
为什么要重构
改进程序设计
使软件更容易理解
帮助找到 Bug
提高编程速
思考的开口一经打开,就如滔滔江水,连绵不绝。
由此我又想到,How,如何组织开展重构?如何在保证质量的情况下进行重构?如何将优秀的重构方式和代码习惯在组织内部传播和扩散?
Who,谁来主导重构,谁来实施重构?
幸运的是,后来在讨论中,这些问题都一一解开了。
任何事情都没有绝对,即便理论上讲重构是一门艺术,即便重构的确是一个非常优雅的事情。在讨论中,极客们不愧是实操高手,将理论的探讨再次落地。有观点认为,重构也要看投入产出比,当一段代码不常被用到,或者不再是核心价值部分的时候,就需要衡量是否需要投入精力和时间去重构它。
重构也分了好几个层面,小到方法抽取层面,流程梳理,大到数据结构,分层,接口抽象。也要使用不同的实施策略。
上升到艺术层面,我特别喜欢「坏味道」,「依恋情结」这两个比喻。这种思维方式,把代码看成了生命体,有灵性的主体。这是一种富有智慧和中立的视角,并不是如计算机二维码0、1之间那种非黑即白的冰冷。更不是机械的把代码的问题看作是好代码该留下,坏代码该清理掉的那种对立和执拗。坏味道,它只是因为有了生命,所以有了新成代谢,它只是生命的副产物。我们要保留这份灵性和生命的存在,就要接纳并注意到它的副产物——坏味道。这种视角和表述,充满了人文的关怀和温情。坏味道,不是一刀切,而是首先带着包容和爱意去接纳,然后尽量往好的方面去引导。
坏味道
重复的代码:倘若太多的重复代码,如果这段代码出了问题,需要修改多处,增加了维护成本。
过长的函数:过长的函数,也不利于阅读和维护。
依恋情结:一个类过多的使用其他类的方法和内部数据。它让我想起了人格心理学里面的依恋理论,这种视角,把代码看成一个独立的个体,健康依恋模式的个体,才有健康的人格,才能发挥最好最大的效用。而过度依恋的个体,不仅不能发挥自我的效用,还会成为他人的负担。
过多的注释:注释本身是一种香味,但过多的使用使它成为一种除臭剂,说明注释掩盖下的代码已经变成了坏味道。说白话,就是代码不易读,才需要大段大段的注释。
蓬生麻中,不扶而直
在软件匠艺的这个空间中,时间仿佛过得很快。在极客们的主动、热情和投入的心流状态感染下,产生了一种超越时空的凝聚力。我不是程序员,也没有很厉害的编程技术,但是我不仅没有感受到格格不入的不适感,更没有任何枯燥乏味的感觉。相反,处处都是乐趣,时时都有惊喜。
闭上双眼,深吸一口气,用心去感受,仿佛可以看到一个个有趣的灵魂,拧成一股蓬勃之气,不断跃升,一飞冲天。
这种高能量状态从何而来?
著名的人本主义心理学家,马斯洛曾经在人类激励理论中提出人类的需求可分为五个层次,分别是:生理需求、安全需求、社交需求、尊重需求和自我实现需求。在软件匠艺这个场域中,我感觉生理需求、安全需求已经变得无足轻重。社交需求、尊重需求得到了充分的满足。而“自我实现”的需求成为焦点。一个个高智慧高勤奋的个体在这种高层次追求的过程中,毫无保留的分享,碰撞,充满欣喜的互相欣赏。
水就湿,火就燥,物各从其类也。《荀子》中说,蓬生麻中,不扶而直。说的就是常常与高人往来,你会发展自己的学识,境界也会不断提升。
这里的每一个人对自己所从事的事业的热情,甚至是狂热,软件匠艺的活动让我从感性上直观的感受到什么是极客。比在百度上搜一百遍极客的定义,更加有意义。
怎么样?你渴望成为极客吗?你希望读懂极客吗?来软件匠艺,近距离感受吧。
软件匠艺
4月3日晚,来自ThoguhtWorks的高级咨询师张瑞在「软件匠艺」活动上分享了「代码重构的艺术」,向大家介绍了在一线项目中,他将代码重构作为一项艺术来实践的丰富经验。现场气氛热烈,大家各抒己见。
「软件匠艺」社群,旨在传播匠艺精神,通过定期邀请一线编程「匠人」,分享好的「工作方式」和「习惯」,以帮助程序员更加「快乐」、「高效」、「优雅」地编程。
如果您也渴望精进,欢迎您加入「软件匠艺」,与优秀的学习者共同成长!
“
”
领取专属 10元无门槛券
私享最新 技术干货