锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

你的代码会说话吗?(上)

时间:2022-08-30 12:30:00 高脚led双脚连接器

声明:这个故事几乎是虚构的,适合程序员和非程序员~

篇首语:「言语简洁,意图自携」这意味着简单而敏捷的表达更容易有效地传达意图。当你听一个罗嗦的人说话时,脑细胞会消耗更多,这种不愉快的消耗会引起本能大脑的抵抗。自然,它降低了你专注于倾听的欲望。请相信这不是你的问题,而是对你说话的人的改进。

域冗余

什么!我写的代码也会说话?” 清扬惊讶地大声喊道。

刚入职不到2个月的清扬特别热爱学习,每周五下午的学习时间,她一定会缠着他Buddy袁帅讨论整洁代码。

不,两人已到公司年会现场并入座,仍在讨论中。袁帅刚要说点什么,被主持人清脆悦耳的声音打断了。

亲爱的客人和领导人,欢迎来到思特沃克2019年会。我很高兴也很荣幸能主持年会。首先,请允许我代表您邀请思特沃克全球CEO果总、思特沃克中国总经理张总… 思特沃克内训团队Head卓老师…”

袁帅皱起眉头,凑到旁边同事的耳边:主持人是哪位同事?
我不知道没见过,好像听说今年从外面雇了个职业主持人。

“难怪…” 袁帅若有所思地坐直了,但他的眉皱着眉头。这张表情被清阳抓住了。他开玩笑说:主持人真漂亮。上个月你没有报名收集主持人。现在你嫉妒了!

呃,你觉得刚才主持人的开场介绍有什么问题吗? 袁帅一点也不挑衅,故意挑起清扬的兴趣。经过这样一个问题,我没有觉得清扬有什么不正常的警惕,嗯… 好像有点不对劲,但说不出来。

如果主持人不是内部同事,袁帅一句话刚挤出半句,清阳就像发现新大陆: 啊,我发现了!她她介绍人名时,她总是带「思特沃克」这个前缀,外部职业的主持人应该是习惯性的。

小鬼好,这么聪明!

“现在有请思特沃克全球CEO郭总上台发言,掌声有请! 主持人好像听到了他俩谈话,再次用行动证实了清扬的发现。他俩也为CEO陌生陌生熟悉的掌声,内敛CEO结束演讲只用了一分钟。

在掌声消散之前,袁帅给清扬抛出了一个问题:如果你是主持人,你会怎么说? 废话,我肯定不会带多余的东西。「思特沃克」前缀原本是我们公司的年会。

是的,我们写代码的时候很容易犯这么小的困惑。来吧,我给你写几段。 袁帅早就准备好从背包里抽出来了A4纸和铅笔手写断码:


看了一会儿,清扬开始说:在「ParkingLot」在这个域的限制下,「parkingCapability」这个属性中前缀parking就是一个「域冗余」,命名可以更简洁「capacity」。「parkCar」该方法也有域冗余,使用「park」命名就好。” 说完,她从袁帅手里抢了铅笔,换了一版:


袁帅给清扬竖起了大拇指,这让清扬有点骄傲,她惊呆了:哼,我在代码库里见过太多这样的冗余! 我看见她熟练地写了一个操作User对象资源库:


袁帅也很清楚冗余的地方,因为纸不能写,但他心里有一个明确的想法:方法「queryUsers」、「queryUser」和「updateUser」中的User后缀属于「域冗余」,以下命名方法可用于区分:


清阳明白了袁帅的意思。这一次,她用真诚的学习而不是嘲笑的语气问袁帅:有很多这样的冗余代码,但冗余听起来很广泛。有没有更合适的名字把它传递给别人?

清扬的语气让袁帅心里颇感动,他认真思考了一会儿才不紧不慢地说:「域冗余」。这意味着什么?域,一般是指一个特定的范围,如通常被称为领域、区域的域。在代码中,工程、模块、包、类、方法是不同级别的域。模块位于工程域中,包位于模块域下,类位于包位置,成员变量和方法位于类位置。「域冗余」在一个明确的特定域下,重复使用父级域的名称进行额外的修改。

清扬此刻对袁帅那种纯真不屑的眼神,此刻褪去了一点不屑,但依然纯真。

请内训团队Head卓老师上台为讲师颁奖。 听到主持人的邀请,两只眼睛相视后会心一笑,因为听到主持人的话鬼使神差地消除了域冗余「思特沃克」。

码尾禅

卓老师为台上可爱的讲师们颁奖合照之后就下去了,只见主持人让其中一名讲师留步聊聊这一年作为讲师的感想。也不知道主持人是不是故意的,把跟袁帅有过较多合作的技术大拿吴柳岩留了下来,让袁帅没想到的是柳岩这么一个不爱讲话的技术直男也在组织需要的时候挺身而出。

额头,我叫柳岩,额头,我叫柳岩。… 我来自国内华北交付团队,我是一个DEV,来Thoughtworks已经七年多了。我一直在,然后我特别感谢今年的内部培训团队提供了不同的机会,这也给了我尝试不同事情的机会…”

看到袁帅的眉头微微住,清扬心里猜到了他在想什么,包大人,你又发现什么猫腻了吗? 说完一副古怪精灵的眼睛直盯着袁帅,小鬼少来!袁帅立刻放松地笑了。

口头禅,从好的角度来说,它代表了一个人的特点,可以给人留下一些深刻而奇怪的印象。它也可以被用作思维缓冲器。袁帅假装严肃。

往不好的地方说,有点多余,很容易引起听众的注意。 清扬迅速接过话茬,直接把袁帅想说的下半句话说出来。

你看,我们经常在各种正式和非正式场合听到「然后,那个,这个,额头,…」,如果你必须给口头禅增加指控,在大多数情况下,它的存在对沟通没有太大的副作用,但如果没有这些潜意识的习惯,它将使整个表达看起来更简洁和流畅,提高观众体验和沟通的效果。

清扬这次没有抢话,而是边听边开始了第二张A4纸上写着代码,过了一会儿抬起头,微微骄傲地说:这种现象也存在于代码的表达中。有些人总是在命名业务概念后添加它「Info」或者「Data」后缀,比如「ContactInfo,PolicyInfo,PersonData」,这种加在代码末尾的我称之为「码尾禅」。同样,命名前加上类似的前缀也属于这种,加在前面的码头禅也比较少见。

清扬的言论让袁帅自豪感油然而生,颇有名师出高徒的味道。不知道是酒后巡逻还是自豪感。他有点飘然。他伸出手去拿清扬刚写的代码手稿,让他着迷:


“砰!” 清扬手持高脚杯,故意加大力度碰袁帅的杯子,袁帅这才从发呆状回来,继续在酒过N巡的路上前行。

层错综

我认为内部培训师应该扮演三个角色。首先,内部培训师应该是知识沉淀者。其次,内部培训师应该树立文化传播的旗帜,成为文化传播者。最后,内部培训师应充当组织润滑剂,即高效协调者。

内部培训师作为知识沉淀者,除了积累自己的专业知识外,还应根据组织的发展需要提取业务部门的知识和经验,沉淀成方法论和框架体系,有效复制和传播组织的知识和经验,帮助员工的知识储备和技能成长。

作为一名文化传播者,内部培训师面临着企业中的新老员工。你的一举一动、言行都在向员工传达一些内在的文化信息。你的认知概念是否符合企业文化,你的言行是否符合企业文化,这将在很大程度上影响你培训过的学生,所以你必须深入了解企业文化,并以身作则。

作为组织润滑剂,您需要帮助多个不同的业务部门进行人员培训,在业务部门和职能部门之间,您需要优先协调优势资源,解决高优先业务部门的问题,同时考虑其他部门的发展需求,做好资源协调和冲突协调。

虽然袁帅刚加入内训,但卓先生的激情言论让他兴奋不已。他同意这三个角色的隐喻,并秘密承诺在内训中取得一些成绩。

除了文字中的精神,袁帅还称赞他的结构如此清晰,逻辑顺序非常自然。一开始,他解释了三个角色,然后一个接一个地深入介绍一个简单的总结。

此时,他有点潸然泪下,因为想起了自己刚毕业那会儿,去找别人时,讲话结构混乱,东一句西一句的,讲了一两分钟别人都听不懂他要表达什么。后来在Thoughworks,经过许多同事的直言不讳反馈,袁帅逐渐克服了这个问题。袁帅利用这一事实来编写代码。

碰巧清阳最近在读金字塔原理。袁帅想测试她。当然,这不是沟通和表达,而是代码。他拿起手机,找到了之前拍的代码照片,递给清阳:嘿,最近的金字塔原理怎么样了?我刚听了姐姐的演讲。你有什么新发现吗?

清扬兴奋地接受了挑战,但让她不解的是,明明在说金字塔原理和表达,却给了她一个代码:


意图导向编程! 没想到清扬这么快就说出了关键词。

“可以啊,你也看过《敏捷技能修炼:敏捷软件开发与设计的最佳实践》这本书?” 袁帅假装惊讶。

我不止看过。当时就是这个意图导向编程,让我一知半解。今天你帮我解惑。

听到清扬的请教,喝了三巡酒的袁帅假装严肃地说:哦,哪里不懂?

作者说这样写代码叫意图导向编程。我不是从一开始就一行一行地写这些细节吗?

的确,你想写的代码和你想说的都是你想表达的。说你一行一行的写作不符合意图导向有点委屈。我来谈谈我的理解。 袁帅喝了口水杯里的热水,靠近清阳:如果我长篇大论各种细节,听了会有什么感觉?

“烦躁!” 清扬不假思索地蹦出两个字。

读这样的代码怎么办? 袁帅趁势追击。

同样,心里还会吐槽这是哪个二货写的! 清扬可爱的表情逗袁帅笑,因为他想到清扬打开Git提交记录显示提交人是她自己的照片。>

“对的,你可能需要花很多精力和注意力去了解这些代码的意图,而且也容易看了后面忘了前面,迷失在细节里。那如果我把这大段代码做一层抽象提炼,提炼成三个功能步骤,每个步骤给它一个贴切的名字,你感觉会怎么样?”

“我就很方便就明白作者意图了,而且不容易迷路。”清扬反应很敏捷。

“是呀,这样你就很快获知作者的整体意图,就可以大大节省你的时间,当你需要了解细节的时候,再进入到某个步骤。”

“所以说,意图导向是提倡用更高效的方式表达代码意图咯!” 清扬若有所悟地补充道。

基本上说对了,要做到高效,就要优先传达更高抽象层次的意图,而且同一个地方抽象层次应当保持在一个层级上,然后逐层往下,越往下就会越具体,也就是越细节。

“难怪,有些人一开口,听众如沐春风(意图明朗,结构清晰),有的人一开口,听众痛不欲生(陷入细节,苦苦挣扎)。而介于这之间的一开口,听众会不知所措(层次结构交叉混乱)。” 清扬很得意自己的总结,顺手举杯跟袁帅碰了一下,但她没注意到袁帅此时愧疚地低下头,他有点内疚当年刚毕业的自己给别人带来了不少困扰。

“作者也提到这种方式仅仅是思考方式和编码顺序不同。但作者说这个基本不会增加工作量,可怎么觉得我用这种方式的时候就很花时间呢?” 清扬有点像在自言自语。

“意图导向编程得结合结构化思考和呈现,方才让代码讲得一席受欢迎的话”

“编程高手不是能够快速写出可用代码的人,而是能够快速写出别人一眼就能看懂的代码的人(整洁可用)”

“编程高手更多比拼的是底层胜任力,如何分解问题,如何抽象提炼,这些都不是一朝一夕能练成的”

“编程是艺术表演,不是打字游戏”

在一连串地感慨后,袁帅觉得自己喝的不是酒,而是思想。此刻,酒过四巡的袁帅已然无力思考,望着台上的节目表演,思绪不知去向。

“幸运奖二等奖,袁帅!” 主持人话音刚落,清扬尖叫着跳起来,把思绪飘飞的袁帅惊醒,然后一股力量“托”着他飘到领奖台。

今年年会,他不再因奖品感到寂寞…


文/Thoughtworks 袁慎建
原文链接:如何编写简洁代码?(上)-Thoughtworks洞见

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章