摘要: 在五四青年節之際,社區發起了來曬曬屬於你的「第83行」的活動,活動中邀請業界的大牛、大神們來曬代碼或者Review代碼!第一波邀請的大神就是阿里研究員福貝。程序員
最近社區有個很火的《向代碼致敬,尋找你的第83行》的活動,緣起於前幾天,在阿里巴巴的一個小黑屋裏,5名對代碼有着極致追求的程序員參與了阿里代碼領域最高榮譽「多隆獎」最終角逐(多隆做爲淘寶的第一代程序員,也是不少技術人心中的大神)。那天代碼評審現場,看到某代碼片斷最後結尾,多隆忽然補上一句,往上翻看下第83行。代碼通常都是幾百行,他看到最後,竟然還記得第83行的一個細微瑕疵,這得是對代碼懷着怎樣的敬畏之心。redis
因而,在五四青年節之際,社區發起了來曬曬屬於你的「第83行」的活動,活動中邀請業界的大牛、大神們來曬代碼或者Review代碼!第一波邀請的大神就是阿里研究員福貝。函數
@技術福貝 曬出了以下代碼:測試
我用一個小演示程序來解釋一下 C++11/14 裏的 closure 是能夠多麼的「爽」 :-)優化
範例裏面,咱們要寫的 DoSomething() 須要作兩件事情,Calculate() 算出一個矩形的四個頂點,而後 DrawRect() 去畫它。這樣的狀況在實際代碼中很常見,一個函數由於複雜,要分幾步去作,最好分紅幾個子函數。可是問題是須要傳遞好幾個參數,頭痛了!第一種寫法,無奈之下只能把全部參數一一列出,而後 header 裏就多了個 Calculate(......) 長長的子函數,須要傳進傳出多個變量。網站
有了 closure 就好辦多了!咱們能夠在 DoSomething() 裏直接定義 Calculate(), 用 [&] 把全部 variables on the stack 傳進去。整個寫法簡潔不少,也易於維護,一方面參數的增刪再也不須要更多的工做,另外一方面,更爲重要的是,Calculate() 已經徹底定義在 DoSomething() 裏面了,從結構上直接告訴讀者它們的從屬關係!(NOTE: 固然也能夠用一個 inner function 來寫,但是參數傳遞不夠爽)spa
如今,連 header 都顯得如此整潔,只有 DoSomething() 這一個函數了。向代碼致敬!blog
各位快來圍觀:https://yq.aliyun.com/roundta... 遞歸
其餘社區網友這樣曬碼,你們快來圍觀點評吧
一、@故事老神仙-接觸建站開始一直玩到了如今的一個網站代碼的第83行,是一行普通的代碼,沒有特別的地方,但不禁讓本身想起了當初的那份熱愛,那份期待,那是初接觸代碼的小驚喜小激動。
https://yq.aliyun.com/roundta...圖片
二、@黃一刀-個人83行代碼是註釋
https://yq.aliyun.com/roundta...
三、@微wx笑-十二年前寫過一個流量統計,最近想把它改一改再用起來,隨便打開一個類,沒有任何註釋,大家看得懂不?
https://yq.aliyun.com/roundta...
四、@海洋的雲-感受確切來講應該是第83段,自從用了Jupyter Notebook,「代碼行」就所有變成「代碼段」了,/(ㄒoㄒ)/~~
https://yq.aliyun.com/roundta...
五、@浮生遞歸-什麼?竟然暴露了本身的CSS命名不規範!不行,我得再貼段來證實下,有時候仍是規範的~好比483行附近代碼!
https://yq.aliyun.com/roundta...
六、@gfriend_24-最初的代碼片斷(入門Android開發時的BMI計算程序代碼)
https://yq.aliyun.com/roundta...
七、@三忌-這是我12年寫的代碼……
https://yq.aliyun.com/roundta...
八、@海闊天空yy-如下是我寫的一個,用來測試redis集羣的測試程序 https://yq.aliyun.com/roundta...
九、@尼古拉斯雷-看了那個阿里巴巴的那個開發手冊,而後就知道如何去優化這些代碼,如何去規範的定義變量名之類的
https://yq.aliyun.com/roundta...
十、@黃道長-直接上代碼
https://yq.aliyun.com/roundta...