偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

如何編寫(xiě)簡(jiǎn)潔代碼?(上)

原創(chuàng)
開(kāi)發(fā)
當(dāng)你聽(tīng)一個(gè)說(shuō)話啰里啰嗦的人講話時(shí),腦細(xì)胞會(huì)消耗更多,這種不愉快的消耗會(huì)引發(fā)本能腦的反抗。自然而然就降低了你專(zhuān)注傾聽(tīng)的欲望,請(qǐng)相信這不是你的問(wèn)題,而是對(duì)你講話的人要改進(jìn)的方面。

作者:袁慎建

聲明:本故事幾乎屬虛構(gòu),適合程序員和非程序員~

篇首語(yǔ):「話語(yǔ)簡(jiǎn)潔,意圖自攜」說(shuō)的是,干脆利索的表達(dá)更容易有效傳達(dá)意圖。當(dāng)你聽(tīng)一個(gè)說(shuō)話啰里啰嗦的人講話時(shí),腦細(xì)胞會(huì)消耗更多,這種不愉快的消耗會(huì)引發(fā)本能腦的反抗。自然而然就降低了你專(zhuān)注傾聽(tīng)的欲望,請(qǐng)相信這不是你的問(wèn)題,而是對(duì)你講話的人要改進(jìn)的方面。

域冗余

“什么!我寫(xiě)的代碼也會(huì)講話?” 清揚(yáng)驚訝地大聲叫起來(lái)。

剛?cè)肼毑坏?個(gè)月的清揚(yáng)特別熱愛(ài)學(xué)習(xí),每周五下午的學(xué)習(xí)時(shí)刻,她一定會(huì)纏著他的Buddy袁帥探討整潔代碼。

這不,倆已經(jīng)到了公司年會(huì)現(xiàn)場(chǎng)并入座,還在探討著。袁帥剛要說(shuō)點(diǎn)什么,被主持人清脆悅耳的聲音給打斷了。

“尊敬的各位來(lái)賓和領(lǐng)導(dǎo),歡迎來(lái)到思特沃克2019年會(huì)現(xiàn)場(chǎng),我很開(kāi)心也很榮幸能主持年會(huì),首先請(qǐng)?jiān)试S我代表大家邀請(qǐng)思特沃克全球CEO果總、思特沃克中國(guó)區(qū)總經(jīng)理彰總... 思特沃克內(nèi)訓(xùn)團(tuán)隊(duì)Head卓老師...”

袁帥皺起了眉毛,湊到旁邊同事的耳旁:“主持人是哪位同事呀?”“不知道,沒(méi)見(jiàn)過(guò)呢,好像聽(tīng)說(shuō)今年從外面雇了一個(gè)職業(yè)主持人。”

“難怪...” 袁帥若有所思地端坐直,但還是眉頭鎖緊,這幅表情被清揚(yáng)抓了個(gè)正著,調(diào)戲道:“人家主持人真是風(fēng)光了得喲,上個(gè)月征集主持人你不報(bào)名,現(xiàn)在嫉妒了吧!”

“誒,你有沒(méi)有覺(jué)得剛才主持人那段開(kāi)場(chǎng)介紹有什么不對(duì)勁的地方?” 袁帥絲毫沒(méi)有受到挑釁,故意挑起清揚(yáng)的興趣。經(jīng)這么一問(wèn),本來(lái)沒(méi)覺(jué)得有什么不正常的清揚(yáng)警覺(jué)了起來(lái),“嗯... 好像是有點(diǎn)不對(duì)勁,但說(shuō)不上來(lái)。”

“如果主持人不是內(nèi)部同事,”袁帥一句話剛擠出了半句,清揚(yáng)就跟發(fā)現(xiàn)新大陸似的:“啊,我發(fā)現(xiàn)了!她在介紹人名時(shí)總是帶上「思特沃克」這個(gè)前綴,外部職業(yè)的主持人,應(yīng)該是習(xí)慣使然吧?!?/p>

“小鬼不錯(cuò)啊,這么機(jī)靈!”。

“現(xiàn)在有請(qǐng)思特沃克全球CEO果總上臺(tái)發(fā)言,掌聲有請(qǐng)!” 主持人好像聽(tīng)到了他倆談話,再次用行動(dòng)證實(shí)了清揚(yáng)的發(fā)現(xiàn)。他倆也為CEO送去了陌生而熟悉的掌聲,內(nèi)斂的CEO僅用了1分鐘就結(jié)束了自己的發(fā)言。

在掌聲還未消散前,袁帥給清揚(yáng)拋出了一個(gè)問(wèn)題:“你要是主持人,你會(huì)怎么講?” “廢話,我肯定不會(huì)帶上多余的「思特沃克」前綴,本來(lái)就是咱們公司內(nèi)部的年會(huì)?!?/p>

“是的,咱們寫(xiě)代碼的時(shí)候也很容易犯這樣的小糊涂,來(lái),我寫(xiě)幾段給你看看。” 袁帥早有準(zhǔn)備地從背包里抽出A4紙和鉛筆手寫(xiě)了幾段斷碼:

圖片

清揚(yáng)瞅了一會(huì)兒就開(kāi)始說(shuō):“在「ParkingLot」這個(gè)域的限定下,「parkingCapability」這個(gè)屬性中前綴parking就是一個(gè)「域冗余」,更簡(jiǎn)潔的命名可以是「capacity」?!竝arkCar」這個(gè)方法也存在域冗余,使用「park」命名就好。” 說(shuō)罷,她從袁帥手里搶過(guò)鉛筆改了一版:

圖片

袁帥給清揚(yáng)豎起了大拇指,這讓清揚(yáng)有點(diǎn)得意,她嘚瑟起來(lái):“哼,這種冗余我在代碼庫(kù)見(jiàn)太多了!” 只見(jiàn)她嫻熟的寫(xiě)了一個(gè)用于操作User對(duì)象的資源庫(kù)類(lèi)「UserRepository」:

圖片

袁帥也很清楚冗余的地方,由于紙張寫(xiě)不下了,但他心里有明確的思路:“方法「queryUsers」、「queryUser」和「updateUser」中的User后綴屬于「域冗余」,可以使用如下命名方式來(lái)區(qū)分”:

圖片圖片

清揚(yáng)領(lǐng)會(huì)到袁帥的意思了,這次她秉著真心學(xué)習(xí)而非調(diào)侃的口吻問(wèn)了袁帥:“這種冗余代碼還真不少呢,但冗余有聽(tīng)起來(lái)很寬泛,有沒(méi)有一個(gè)更合適的名字來(lái)向別人傳遞它呢?!?/p>

清揚(yáng)的口吻讓袁帥內(nèi)心頗為感動(dòng),他很認(rèn)真地思考了好一會(huì)兒才不緊不慢地講:“「域冗余」。什么意思呢?域,泛指一個(gè)特定范圍,比如常說(shuō)的領(lǐng)域、區(qū)域中的域。在代碼中,工程、模塊、包、類(lèi)、方法都是不同級(jí)別的域。模塊處在工程的域中,包處在模塊的域下,類(lèi)處在包的域中,成員變量和成員方法處在類(lèi)的域中?!赣蛉哂唷箘t是指在一個(gè)明確特定的域下,重復(fù)使用父級(jí)域的名稱(chēng)來(lái)做額外的修飾。”

清揚(yáng)此刻對(duì)袁帥那種純真不屑的眼神,此刻褪去了幾分不屑,但依然純真。

“有請(qǐng)內(nèi)訓(xùn)團(tuán)隊(duì)Head卓老師上臺(tái)為講師們頒獎(jiǎng)” 聽(tīng)到主持人的邀請(qǐng),倆眼神不約而同相視后會(huì)心一笑,因?yàn)槁?tīng)出來(lái)主持人的這段話鬼使神差般地消除了域冗余「思特沃克」。

碼尾禪

卓老師為臺(tái)上可愛(ài)的講師們頒獎(jiǎng)合照之后就下去了,只見(jiàn)主持人讓其中一名講師留步聊聊這一年作為講師的感想。也不知道主持人是不是故意的,把跟袁帥有過(guò)較多合作的技術(shù)大拿吳柳巖留了下來(lái),讓袁帥沒(méi)想到的是柳巖這么一個(gè)不愛(ài)講話的技術(shù)直男也在組織需要的時(shí)候挺身而出。

“額,那個(gè)我叫柳巖,額... 我來(lái)自國(guó)內(nèi)華北交付團(tuán)隊(duì),我是一名DEV,來(lái)Thoughtworks有7年多了。那個(gè)我平時(shí)一直在做交付,然后也特別感謝今年內(nèi)訓(xùn)團(tuán)隊(duì)提供了一個(gè)不一樣的機(jī)會(huì),那個(gè)也讓我有機(jī)會(huì)去嘗試不一樣的事情......”

看到袁帥眉頭微微緊鎖,清揚(yáng)心里猜到他在想什么,“包大人,您是不是又發(fā)現(xiàn)什么貓膩啦?” 說(shuō)完一副古怪精靈的眼睛直盯著袁帥,“小鬼少來(lái)!”袁帥頓時(shí)表情放松地笑了起來(lái)。

“口頭禪這個(gè)東西,往好里說(shuō),它代表了一個(gè)人的特色,能夠讓人留下一些深刻可能奇怪的印象。還可以被當(dāng)做思維緩沖器?!痹瑤浖傺b一本正經(jīng)的開(kāi)門(mén)見(jiàn)山了。

“往不好里說(shuō),有點(diǎn)多余,容易誘導(dǎo)聽(tīng)眾注意力放在講者的口頭禪上了?!?清揚(yáng)迅速接過(guò)話茬,直接把袁帥想說(shuō)的下半句搶先講出來(lái)。

“你看,咱們?cè)诟鞣N正式和非正式的場(chǎng)合經(jīng)常聽(tīng)到「然后、那么、那個(gè)、這個(gè)、額...」,要是非得給口頭禪加個(gè)罪名也有點(diǎn)過(guò)了,大多數(shù)情況下它的存在對(duì)溝通帶來(lái)的副作用也不大,只是如果沒(méi)有這些下意識(shí)的習(xí)慣用語(yǔ),會(huì)讓整個(gè)表達(dá)顯得更加精簡(jiǎn)流暢,提升聽(tīng)眾體驗(yàn)和溝通的效果。”

清揚(yáng)這次沒(méi)有搶話,而是邊聽(tīng)邊開(kāi)始在第二張A4紙上寫(xiě)起了代碼,不一會(huì)兒抬起頭來(lái)略微得意道:“代碼的表達(dá)也存在這種現(xiàn)象,有些人總在業(yè)務(wù)概念命名后加個(gè)「Info」或者「Data」后綴,比如「ContactInfo,PolicyInfo,PersonData」,這種加在代碼末尾的我稱(chēng)之為「碼尾禪」。同理,類(lèi)似加在命名之前的前綴也屬于這種,加在前面的碼頭禪相對(duì)少見(jiàn)?!?/p>

清揚(yáng)的一番言論讓袁帥自豪感油然而生,頗有名師出高徒的味道,也不知道是酒過(guò)一巡還是自豪感使然,他有點(diǎn)飄飄然,伸手拿來(lái)清揚(yáng)剛才寫(xiě)的代碼手稿,看得入迷:

圖片

“砰!” 清揚(yáng)手持高腳杯有意加大了力度碰在袁帥的杯子上,袁帥這才從發(fā)呆狀回過(guò)神來(lái),繼續(xù)在酒過(guò)N巡的道路上前行著。

層錯(cuò)綜

“我覺(jué)得內(nèi)訓(xùn)師要扮演好三個(gè)角色,首先,內(nèi)訓(xùn)師應(yīng)該是一名知識(shí)沉淀者,其次,內(nèi)訓(xùn)師應(yīng)該扛起文化傳播的旗幟,做一名文化傳播者,最后,內(nèi)訓(xùn)師要充當(dāng)組織潤(rùn)滑劑,也就是高效協(xié)調(diào)者。

作為知識(shí)沉淀者,內(nèi)訓(xùn)師除了自身的專(zhuān)業(yè)業(yè)務(wù)知識(shí)的積累,還應(yīng)該根據(jù)組織的發(fā)展需要,提取業(yè)務(wù)部門(mén)的知識(shí)和經(jīng)驗(yàn),并將其沉淀成方法論和框架體系,讓組織的知識(shí)和經(jīng)驗(yàn)得到高效復(fù)制和傳播,助力員工知識(shí)儲(chǔ)備和技能成長(zhǎng)。

作為文化傳播者,內(nèi)訓(xùn)師面對(duì)的是企業(yè)中的新、老員工,你的一舉一動(dòng),一言一行都在向員工傳遞著某種內(nèi)在的文化信息。你的認(rèn)知理念是否符合企業(yè)文化,你的言行舉止是否符合企業(yè)文化,這都將很大程度影響被你培訓(xùn)過(guò)的學(xué)員,所以你得深刻理解企業(yè)文化,并身體力行,以身作則。

作為組織潤(rùn)滑劑,你要幫助多個(gè)不同的業(yè)務(wù)部門(mén)去做人員培養(yǎng),在業(yè)務(wù)部門(mén)和職能部門(mén)之間,你需要優(yōu)先根據(jù)組織發(fā)展的需要,去協(xié)調(diào)優(yōu)勢(shì)資源,解決高優(yōu)先級(jí)業(yè)務(wù)部門(mén)的問(wèn)題,同時(shí)也要兼顧其他部門(mén)的發(fā)展需要,做好資源協(xié)調(diào)和沖突協(xié)調(diào)?!?/p>

袁帥雖然剛加入內(nèi)訓(xùn)不久,卓老師的這番激情言論讓他心潮澎湃,他很認(rèn)同這三個(gè)角色的比喻,也暗自許諾要在內(nèi)訓(xùn)好好干出點(diǎn)成績(jī)。

除了文字中的精神,袁帥也贊嘆其結(jié)構(gòu)如此清晰,邏輯順序非常自然,一開(kāi)始道明3個(gè)角色,然后逐個(gè)角色深入介紹,一個(gè)簡(jiǎn)單的先總后分結(jié)構(gòu)彰顯出來(lái)。

此時(shí),他有點(diǎn)潸然淚下,因?yàn)橄肫鹆俗约簞偖厴I(yè)那會(huì)兒,去找別人時(shí),講話結(jié)構(gòu)混亂,東一句西一句的,講了一兩分鐘別人都聽(tīng)不懂他要表達(dá)什么。后來(lái)在Thoughworks,經(jīng)過(guò)很多同事直言不諱地反饋,袁帥逐漸克服了這個(gè)問(wèn)題。久病成良醫(yī)加上薄弱的舉一反三能力,袁帥把這個(gè)道理運(yùn)用在寫(xiě)代碼上了。

恰巧清揚(yáng)最近在讀《金字塔原理》,袁帥想考一考她,當(dāng)然不是溝通表達(dá),而是代碼。他拿起手機(jī)找到之前拍的一張代碼照片遞給清揚(yáng):“嘿,最近《金字塔原理》咋樣了,剛聽(tīng)了大姐大的發(fā)言,你有什么新發(fā)現(xiàn)嗎?”

清揚(yáng)興奮地接受了挑戰(zhàn),不過(guò)讓她不解的是,明明在說(shuō)《金字塔原理》和表達(dá),但給她的卻是一片代碼:

圖片

“意圖導(dǎo)向編程!” 沒(méi)想到清揚(yáng)這么快就說(shuō)出了關(guān)鍵詞。

“可以啊,你也看過(guò)《敏捷技能修煉:敏捷軟件開(kāi)發(fā)與設(shè)計(jì)的最佳實(shí)踐》這本書(shū)?” 袁帥故作驚訝。

“何止看過(guò),當(dāng)時(shí)就是這個(gè)意圖導(dǎo)向編程讓我一知半解,正好今兒你幫我解解惑。”

聽(tīng)到清揚(yáng)的請(qǐng)教,酒過(guò)三巡的袁帥這次假裝正經(jīng)地關(guān)切道:“哦,哪里不懂呀?”

“作者說(shuō)這樣寫(xiě)代碼叫意圖導(dǎo)向編程,難道我從一開(kāi)始一行一行的寫(xiě)這些細(xì)節(jié)過(guò)程,不是按照我的意圖嗎?”

“確實(shí),你要寫(xiě)的代碼和你要說(shuō)的話都是你意圖想表達(dá)的內(nèi)容,要說(shuō)你一行一行的寫(xiě)不合符意圖導(dǎo)向有點(diǎn)冤枉,我談?wù)勎业睦斫夤!?袁帥喝了口水杯中的熱水,往清揚(yáng)靠近了一些:“如果我講話一上來(lái)長(zhǎng)篇大論各種細(xì)節(jié),你聽(tīng)了會(huì)有什么感受?”

“煩躁!” 清揚(yáng)不假思索地蹦出兩字。

“那讀這樣的代碼的呢?” 袁帥趁勢(shì)追擊。

“一樣啊,心里還會(huì)吐槽這是哪個(gè)二貨寫(xiě)的!” 清揚(yáng)呆萌的表情把袁帥逗笑了,因?yàn)樗氲搅饲鍝P(yáng)打開(kāi)Git提交記錄看到提交者是她自己的畫(huà)面。

“對(duì)的,你可能需要花很多精力和注意力去了解這些代碼的意圖,而且也容易看了后面忘了前面,迷失在細(xì)節(jié)里。那如果我把這大段代碼做一層抽象提煉,提煉成三個(gè)功能步驟,每個(gè)步驟給它一個(gè)貼切的名字,你感覺(jué)會(huì)怎么樣?”

“我就很方便就明白作者意圖了,而且不容易迷路?!鼻鍝P(yáng)反應(yīng)很敏捷。

“是呀,這樣你就很快獲知作者的整體意圖,就可以大大節(jié)省你的時(shí)間,當(dāng)你需要了解細(xì)節(jié)的時(shí)候,再進(jìn)入到某個(gè)步驟。”

“所以說(shuō),意圖導(dǎo)向是提倡用更高效的方式表達(dá)代碼意圖咯!” 清揚(yáng)若有所悟地補(bǔ)充道。

“基本上說(shuō)對(duì)了,要做到高效,就要優(yōu)先傳達(dá)更高抽象層次的意圖,而且同一個(gè)地方抽象層次應(yīng)當(dāng)保持在一個(gè)層級(jí)上,然后逐層往下,越往下就會(huì)越具體,也就是越細(xì)節(jié)。”

“難怪,有些人一開(kāi)口,聽(tīng)眾如沐春風(fēng)(意圖明朗,結(jié)構(gòu)清晰),有的人一開(kāi)口,聽(tīng)眾痛不欲生(陷入細(xì)節(jié),苦苦掙扎)。而介于這之間的一開(kāi)口,聽(tīng)眾會(huì)不知所措(層次結(jié)構(gòu)交叉混亂)?!?清揚(yáng)很得意自己的總結(jié),順手舉杯跟袁帥碰了一下,但她沒(méi)注意到袁帥此時(shí)愧疚地低下頭,他有點(diǎn)內(nèi)疚當(dāng)年剛畢業(yè)的自己給別人帶來(lái)了不少困擾。

“作者也提到這種方式僅僅是思考方式和編碼順序不同。但作者說(shuō)這個(gè)基本不會(huì)增加工作量,可怎么覺(jué)得我用這種方式的時(shí)候就很花時(shí)間呢?” 清揚(yáng)有點(diǎn)像在自言自語(yǔ)。

“意圖導(dǎo)向編程得結(jié)合結(jié)構(gòu)化思考和呈現(xiàn),方才讓代碼講得一席受歡迎的話”

“編程高手不是能夠快速寫(xiě)出可用代碼的人,而是能夠快速寫(xiě)出別人一眼就能看懂的代碼的人(整潔可用)”

“編程高手更多比拼的是底層勝任力,如何分解問(wèn)題,如何抽象提煉,這些都不是一朝一夕能練成的”

“編程是藝術(shù)表演,不是打字游戲”

在一連串地感慨后,袁帥覺(jué)得自己喝的不是酒,而是思想。此刻,酒過(guò)四巡的袁帥已然無(wú)力思考,望著臺(tái)上的節(jié)目表演,思緒不知去向。

“幸運(yùn)獎(jiǎng)二等獎(jiǎng),袁帥!” 主持人話音剛落,清揚(yáng)尖叫著跳起來(lái),把思緒飄飛的袁帥驚醒,然后一股力量“托”著他飄到領(lǐng)獎(jiǎng)臺(tái)。

今年年會(huì),他不再因獎(jiǎng)品感到寂寞......

責(zé)任編輯:趙寧寧 來(lái)源: Thoughtworks洞見(jiàn)
相關(guān)推薦

2022-12-15 10:52:26

代碼開(kāi)發(fā)

2021-04-25 11:31:45

React代碼整潔代碼的實(shí)踐

2024-01-30 08:54:05

JavaScript技巧代碼

2020-08-06 16:34:48

Python開(kāi)發(fā)工具

2020-05-11 15:23:58

CQRS代碼命令

2020-10-04 13:15:37

代碼技術(shù)開(kāi)發(fā)

2022-05-10 10:28:21

JavaScript代碼

2022-08-28 19:03:18

JavaScript編程語(yǔ)言開(kāi)發(fā)

2024-06-03 11:43:55

2010-02-05 16:49:05

編寫(xiě)Android 代

2012-03-15 13:36:51

云計(jì)算JavaSpring框架

2012-07-11 10:51:37

編程

2015-01-28 14:30:31

android代碼

2021-06-08 09:35:11

Cleaner ReaReact開(kāi)發(fā)React代碼

2024-06-03 11:36:06

Pythonf-string

2016-02-23 11:03:03

代碼質(zhì)量編寫(xiě)函數(shù)

2021-03-17 08:00:59

JS語(yǔ)言Javascript

2010-03-12 11:07:49

Python retu

2010-02-03 13:55:51

Python 代碼

2022-06-07 09:30:35

JavaScript變量名參數(shù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)