【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”_C/C++_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > C/C++ > 【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”

【晒出你的第83行代码】阿里研究员福贝,用一个小演示程序来解释一下 C++11/14 里的 closure 是可以多么的“爽”

 2018/5/9 20:56:40  猫耳呀  程序员俱乐部  我要评论(0)
  • 摘要:摘要:在五四青年节之际,社区发起了来晒晒属于你的“第83行”的活动,活动中邀请业界的大牛、大神们来晒代码或者Review代码!第一波邀请的大神就是阿里研究员福贝。最近社区有个很火的《向代码致敬,寻找你的第83行》的活动,缘起于前几天,在阿里巴巴的一个小黑屋里,5名对代码有着极致追求的程序员参与了阿里代码领域最高荣誉“多隆奖”最终角逐(多隆作为淘宝的第一代程序员,也是很多技术人心中的大神)。那天代码评审现场,看到某代码片段最后结尾,多隆突然补上一句,往上翻看下第83行。代码一般都是几百行
  • 标签:程序 c++ 一个 代码 研究

摘要:?在五四青年节之际,社区发起了来晒晒属于你的“第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?

?

原文链接

上一篇: java在线打开PDF文档 下一篇: 没有下一篇了!
发表评论
用户名: 匿名