【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”...
為什么80%的碼農都做不了架構師?>>> ??
摘要:?在五四青年節之際,社區發起了來曬曬屬于你的“第83行”的活動,活動中邀請業界的大牛、大神們來曬代碼或者Review代碼!第一波邀請的大神就是阿里研究員福貝。
最近社區有個很火的《向代碼致敬,尋找你的第83行》的活動,緣起于前幾天,在阿里巴巴的一個小黑屋里,5名對代碼有著極致追求的程序員參與了阿里代碼領域最高榮譽“多隆獎”最終角逐(多隆作為淘寶的第一代程序員,也是很多技術人心中的大神)。那天代碼評審現場,看到某代碼片段最后結尾,多隆突然補上一句,往上翻看下第83行。代碼一般都是幾百行,他看到最后,居然還記得第83行的一個細微瑕疵,這得是對代碼懷著怎樣的敬畏之心。
于是,在五四青年節之際,社區發起了來曬曬屬于你的“第83行”的活動,活動中邀請業界的大牛、大神們來曬代碼或者Review代碼!第一波邀請的大神就是阿里研究員福貝。
@技術福貝?曬出了如下代碼:
我用一個小演示程序來解釋一下 C++11/14 里的 closure 是可以多么的“爽” :-)
范例里面,我們要寫的 DoSomething() 需要做兩件事情,Calculate() 算出一個矩形的四個頂點,然后 DrawRect() 去畫它。這樣的情況在實際代碼中很常見,一個函數因為復雜,要分幾步去做,最好分成幾個子函數。但是問題是需要傳遞好幾個參數,頭痛了!第一種寫法,無奈之下只能把所有參數一一列出,然后 header 里就多了個 Calculate(......) 長長的子函數,需要傳進傳出多個變量。
有了 closure 就好辦多了!我們可以在 DoSomething() 里直接定義 Calculate(), 用 [&] 把所有 variables on the stack 傳進去。整個寫法簡潔很多,也易于維護,一方面參數的增刪不再需要更多的工作,另一方面,更為重要的是,Calculate() 已經完全定義在 DoSomething() 里面了,從結構上直接告訴讀者它們的從屬關系!(NOTE: 當然也可以用一個 inner function 來寫,可是參數傳遞不夠爽)
現在,連 header 都顯得如此整潔,只有 DoSomething() 這一個函數了。向代碼致敬!
各位快來圍觀:https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.4.393518a8tcY4xr&order=score#answer-146875?
其他社區網友這樣曬碼,大家快來圍觀點評吧
1、@故事老神仙-接觸建站開始一直玩到了現在的一個網站代碼的第83行,是一行普通的代碼,沒有特別的地方,但不由讓自己想起了當初的那份熱愛,那份期待,那是初接觸代碼的小驚喜小激動。
https://yq.aliyun.com/roundtable/67516#answer-146773
2、@黃一刀-我的83行代碼是注釋
https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.115.438a18a844ewV0&order=score&type=&p=1#answer-146842
3、@微wx笑-十二年前寫過一個流量統計,最近想把它改一改再用起來,隨便打開一個類,沒有任何注釋,你們看得懂不?
https://yq.aliyun.com/roundtable/67516#answer-146527
4、@海洋的云-感覺確切來說應該是第83段,自從用了Jupyter Notebook,“代碼行”就全部變成“代碼段”了,/(ㄒoㄒ)/~~
https://yq.aliyun.com/roundtable/67516#answer-146546
5、@浮生遞歸-什么?居然暴露了自己的CSS命名不規范!不行,我得再貼段來證明下,有時候還是規范的~比如483行附近代碼!
https://yq.aliyun.com/roundtable/67516#answer-146557
6、@gfriend_24-最初的代碼片段(入門Android開發時的BMI計算程序代碼)
https://yq.aliyun.com/roundtable/67516#answer-146498
7、@三忌-這是我12年寫的代碼……
https://yq.aliyun.com/roundtable/67516#answer-146590
8、@海闊天空yy-以下是我寫的一個,用來測試redis集群的測試程序?https://yq.aliyun.com/roundtable/67516#answer-146532
9、@尼古拉斯雷-看了那個阿里巴巴的那個開發手冊,然后就知道如何去優化這些代碼,如何去規范的定義變量名之類的?
https://yq.aliyun.com/roundtable/67516#answer-146477
10、@黃道長-直接上代碼
https://yq.aliyun.com/roundtable/67516/?spm=a2c4e.11154000.rtdmain.115.438a18a844ewV0&order=score&type=&p=1#answer-146845?
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
轉載于:https://my.oschina.net/yunqi/blog/1809620
總結
以上是生活随笔為你收集整理的【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我的 Vue.js 学习日记 (七) -
- 下一篇: mybatis出现 Parameter