说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

独家爆料:Facebook移动客户端开发揭秘

HTML文档下载 WORD文档下载 PDF文档下载
Facebook移动客户端开发团队在不断壮大。现在它有足够的人力,用native来实现以前HTML的功能。同时native在性能方面也有更多优化的空间。为了用户体验Facebook发布纯native版本的客户端应用也就不足为奇了。

目前来说,由于相关政策法律的原因中国国内用户无法正常登陆Facebook,但对于国内的软件开发者来说,Facebook内部的开发环境和氛围还是非常值得我们膜拜的。这是一个非常独特而庞大的软件开发团队,汇集了国际上最为顶尖的软件人才。今天,就为大家聊聊在Facebook内部的软件开发细节。

Facebook内部工程师分享

在Facebook内部经常会有一些人搞讲座,分享一些开发技巧,或者是想推动某些概念和思想。比如有人呼吁让大家都写单元测试,那他就会做很多讲座,跟大家讲怎么做单元测试,为什么要做单元测试。

还会尽量做一些类似Play Programming的活动,就是教大家怎么编程。因为有时候,有些代码真的很难写单元测试。布道的人甚至会来开发一些框架和工具来教你。还有一些例行的分享,比如说一个产品发布以后,就会有一个类似于产品发布的Review分享会,讲产品开发过程或发布过程中遇到的各种问题以及解决方法。最重要的是,在Facebook每一位工程师都可以看代码库里所有的代码,这可是Facebook的整个代码库!并且在代码库也都有WorkHistroy,可以看到谁写了某行代码,或者写的哪个方法。如果你搞不懂,在IRC频道里面,就直接去Ping这段作者,可以通过这种方式可以快速的了解和解决一些问题。

Code Review人人都是监察关

在代码审查方面,有一个流程叫Code Review。在每一次代码改编,都必须经过Review被批准,才能进入代码库。但在整个Facebook中,并没有一个专门的Review小组,但人人都可以Review。在Facebook中没有结对编程,但Code Review你可以看成是另一种形式的结对编程,它是异步的,大家泛结对,不仅仅是两个锁定起来的人。

一般来说我们组内大家互相做Review。但是如果你有一个改动涉及到其他组,那么可能你要看一下与谁有关,发给他参与Review。具体做Review时,每个Review你都是在一个浏览器里面Review。你可以就具体到每一行代码给出你的反馈意见。当然这个Review像一般的网站一样,你可以访问,可以看到的很多讨论,能看到每一个版本的改变历史,所以Review是一次很好的学习机会。

在Facebook中,任何对代码的修改都是以diff的形式完成的。diff的形式与git有一些差别。git是基于现在代码进行的修改,支持新实现功能或者bug修改。比如这个文件里增加了一行,这行的内容是什么,这行删了一行,就是相当于一种文件的修改。而diff简单来说,就相当于你做的一个任务,做了一个代码的修改,加了文件,或删了文件,或者对代码的修改。

当然在Facebook Group里面大家也会讨论问题、问问题、各种交流等。然后有人也会在里面进行布道。比如为什么要坚持某些设计原则,或者分析方案A,出发点是什么,好处是什么,可能的缺陷是什么。如果是方案B,好处是什么,缺陷是什么,都会有这样的讨论。

关于软件工程师的考核方法

据闻,在Facebook移动客户端的代码库中,是消息推送部门的Tech Leader的贡献量最大。但对于软件工程师来说,每个月对于代码库的贡献量并不能完全反应出个人的价值。这只是一个数字,随便看看。因为也许他只是改了一行代码,但有可能把整个系统架构都改了。字数只是一个数值,可以看看,只是看看而已。

对于软件工程师的考核主要是,发布了什么样的功能,有多少用户,用户对它喜欢程度如何?这是可以衡量的,大家都可以看到的。还有其他一些方面,比如大家互相之间写的Review,这些能捕捉到一些额外的工作量。比如说有人在整个工作中对同事的帮助和提升成长很大,但是他有可能没有体现在那个里面,没有体现在他发布多少代码里面。所以Facebook的考核是综合性的。平常软件工程师也都会写周报,一周做了什么,也让大家知道,让主管知道。

这个周报会发给主管,但所有人都可以订阅。在Facebook里的文化氛围是非常开放的。如果某人做了一些很有意义的事情,他还可以自己写总结,讲述做了什么工作,主管会根据这些“成就”有加分。因为有时候他做的这些工作不一定被很多人知道,可能是涉及到其他部门的工作,帮助兄弟部门做了很多改进,相关的人能知道,但是本部门的人不知道。可以通过这种方式,把自己做过的一些比较重要的事情体现出来。

《Hadoop核心技术》作者翟周伟 :我与Hadoop的不解之缘 云集百位核心专家 中国云计算大会演讲议题公布(表) 细品这杯香浓的咖啡——阿里中间件高级专家沈询的Java之旅 超图研究院院长李绍俊:创新2.0时代的平台软件研发体系 优麒麟(Ubuntu Kylin)15.04发布派对在天津成功举行 【CTO讲堂】以API为核心的移动应用云大发展时代 游戏设计的迭代误用:从半成品到概念修正 成功的社区在于拥抱变化——知乎创始人周源专访 优化UITableViewCell高度计算的那些事 国外iOS大牛:开发Apple Watch应用我犯过的错 云上Java System Profiling与Debugging——蚂蚁金服观察与实践 搜狗商业平台Java技术实践 Java在电信软件领域的技术实战 关于Java框架Vert.x的几点思考 Java在游戏服务器开发中的应用 Java框架研发思考 那些年,Java程序员用过的开发工具 Java内存模型的历史变迁 Java 8与Apache Ignite Java开发与技术挑战——关于技术的技术思考 专访唯品会架构师肖桦:做编码的架构师 越来越“简单”的Java 我的Java!越过山丘 专访沙梓社:做个“Think Different”的技术牛人 基于ES6,使用React、Webpack、Babel构建模块化JavaScript应用 财税街创始人石克清:创业须空杯心态+有效社交 自我知识管理:连贯性就是生产率 玩转Google I/O 2015:Android M、IoT、Glass 2.0、VR、ATAP ARC中Retain Cycle揭秘 失控与逆转!企业移动化2.0时代下如何求变? 玩转物联网之MQTT 如何将几个数组的信息写成一个.txt文本文件 笔试题请教? 请教一个小问题! 好难呀好难呀!!!!! 今天狠了狠心买了一本<>,花了我十分之一的工资!心疼啊!散点分! 请问有谁知道如何在C#中使用DirectX? 我在Picturebox中用Picture1.print打了200行数据,可我只能看到前20行 pb数据窗口中的列名在win2000 server里为什么显示不了中文? God save me,help...... tcl手机所使用的是那种操作系统,能否告知小弟,重分相谢! 异常中的问题 刷新对话框的背景图片(基于对话框的程序,而且刷新不只一次)! 请问? 急急急!!上网后的图标不见了!!! 为什么我写了个JSP写入数据库中的中文在数据库中查看是乱码? 用vb制作动态网页 怎么给分给别人? 怎么获得光驱的倍数,设定光驱的倍数啊 怎么破解WIN2000的管理员密码!急!!!! SDK、API、MFC到底是什么? 本人想做给一个网络管理方面的软件,谁能跟我讲讲这方面的原理么? 请问有谁知道如何在VB.net中使用DirectX? 求救:我在 JAVA 中用 TextField 输入文字时发现,在汉字方式下敲不了标点符号,而我用 VC 的 EDIT 却可以,为什么? 大虾帮帮忙,一个关于bpl的问题,十万火急!能给的分我都拿出来了 请问怎么截获对动态链接库的调用? 关于数据库的问题!我搞了几天拉!天啊!我不想学java拉!! 请问我在window98上写html,asp文件,需要安装那些软件,pws我已安装,其它还要什么 请问有谁知道如何在VC.net中使用DirectX? 一个关于realplayer的问题! 请问怎样记录程序运行时间呢,记得好像有一个函数.... ?求一道数学思想题 各位大虾,我想在DELPHI5.0中调用W9X下的超级终端中的传输命令来传输文件??? ■■请教不知怎么回事,我现在打开*.txt文件,WIN98系统提示框:windows不能发现sysexplr.exe,如何解决呀?请热心的C++同事解决■■ 请问有谁知道如何在.net中使用DirectX? 到那里学习SQL语言 关于树!他妈的树! 关于黄色网站的另外一个问题 请问在VB中能否实现COMBOX的自动保存功能? 如何include根目录的文件 OO之路(三)--Persistent Objects 难题!如何在IE中打开一个独立的窗口,同时状态栏里没有显示? 一帮蠢货,水平滚动条都解决不了!就会讨论非技术得问题 送分,大家看看TForm1=class(TForm)这个 送分,关于类关系 用Frame控件作组件模板后,把新生成的组件模板放到主窗体上,无显示,为什么? 送分,40分,先答先要分 请问,Delphi如何处理Dhtml? 怎样读出某一地址内存中的内容啊? 求Web二级代理 怎样在MDI程序中设置自定放纸张的大小? 图标为什么只能是16色? 填空什么的海洋 我身边的正能量作文——我们的价值观我们的中国梦 怎么写 生活中的准确数与近似数的举例 词语什么的海洋 以《阅读正能量,描绘中国梦》为主题,写一篇作文.大概500字左右! 近似数在生活中有哪些例子 土的可松系数与松散系数是一个值吗? 坡屋面面积怎么计算?坡度系数和坡屋面面积有什么联系? 小学作文中国梦我的梦 挖方量为1000方,已知该土的最初可松性系数Ks=1.25,最终可松性系数Ks’=1.05,实际运走的土方量是?某土方工程的挖方量为1000方,已知该土的最初可松性系数Ks=1.25,最终可松性系数Ks’=1.05,实际运走 屋面坡度系数怎么算啊? 小学作文我的梦,中国梦作文 基槽需挖土方300方,基础体积180方,土的最初,最终可松性系数分别为1.4,1.1.计算预留回填土量和弃土量~ 开展读一本好书活动,认真撰写以“阅读正能量,描绘中国梦”为主题征文一篇. 不要只强调中国梦却开展读一本好书活动,认真撰写以“阅读正能量,描绘中国梦”为主题征文一篇. 不要只强 屋面坡度系数是什么意思 生活中能说明1+1大于2的现象有哪些?关于团结协作 征文:阅读正能量,圆我中国梦(500字左右) 生活中何时用到近似数 生活现象有一天我在阳台上做东西,那天风很大.我把手里的线握住一头,那根线旧飘起来了,线很长但风一吹就在空中水平飘动.谁知道这个的物理原理, 挖土坡度系数0.33 怎么算出来的 本桩利用中的土方与石方公路路基工程中的本桩利用有利用土方与利用石方之分,前辈,假设本桩挖方数量大于填方数量,那么怎么来确定本桩利用的填土与填石数量? 积雪对公路行车的危害主要表现在路况的改变,路面积雪经车辆压实后,轮与路面间的摩擦力减小,汽车易左右滑摆.同时,汽车的制动距离也难以控制,一旦车速过快、转弯太急,都可能发生交通事 坡度系数如何计算 土石方施工中,挖运土方单价多少?挖运石方单价多少? 不同汽车不同路况不同速度的制动距离是多少速度分布10-100公里每小时汽车种类 一般的轿车 客车 以及各种卡车真得很急 望好心人能帮助制动距离 就是 汽车紧急刹车 滑动的距离 速度最好 知道坡度系数和长度 如何计算高度?如坡度系数是0.5%,长度是10M,那么最高处的高度如何计算 石方路基含石量大于多少算是石方路基 汽车在行驶中由于路况和车速的不同,发动机(热机)的实际功率也不同,通常情况下实际功率要小于它的最大功率某型号轿车的相关数据.汽油的密度为0.8×103┧/m3,热值为5×107J/┧.若该轿车以100km 从报纸中找出10个近似数.生活中什么时候需要近似数希望能快点回答,语言简练. 中学学生会生活部可以开展什么活动 鲫鱼在水中游泳时,各种鳍有什么作用的实验 求重庆到凤凰古镇的自驾路线,距离最近的,路况较好的,因为是小车车,最好详细点,我是菜鸟,再 从报纸中找出10个近似数.生活中什么时候需要近似数.上学期,急 鲫鱼游泳时,对控制身体前进方向起主要作用的是哪个部位? 现在 成都-映秀-卧龙-四姑娘山的公路目前路况如何?小车是否可以通过, 从报纸中找出十个近似数.你认为生活中什么时候需要用近似数 走复兴路圆中国梦读书成就梦想征文500字左右 以“圆中国梦,从我做起.”为主题的800字以上的作文 生活中哪些时候用到近似数? 鲸尽管不是鱼,但他游起泳来也像鱼类一样,主要靠尾巴的左右摇摆来获得向前的推力判断对错 碾压层跟压实层有什么区别 从报纸中找出十个近似数.你认为生活中什么时候需要近似数 鲫鱼胸鳍和腹鳍的主要作用是( ) A.划水游泳 B. 平衡身体 C.在水鲫鱼胸鳍和腹鳍的主要作用是( ) A.划水游泳 B. 平衡身体 C.在水底爬行 D. 控制前进的方向 什么是公路路基超宽碾压检测 坡屋面的角度为31.89度,请问坡度系数是多少?如题 土的最初可松性系数始终大于最终可松性系数, 细沙垫层怎么测压实度市政管道D400管用的细沙回填.需要测压实度吗?压实度怎么测? 坡屋面是不是就是算投影面积再乘以坡度系数? 求《走复兴路,圆中国梦》演讲稿一篇求一个演讲稿,必须原创,必须啊,主要要写原来的世纪,比如林则徐虎门销烟,孙中山啥的,还要写现在,比如开辟社会主义事业发展新时期,开创改革开服现代 级配砂石垫层需要做哪些试验 坡屋面的角度为18°,那么它的坡度系数和延迟系数是多少求具体计算公式 海底两万里什么的尼摩 现在石子的价格是多少,是按立方算还是按吨计算 请告诉我一些生活中的近似数 什么的海底世界? 中国梦作文500字 生活中的近似数有哪些? 什么的海洋 砂垫层和砂石垫层施工质量控制有哪些? 请问坡度是指哪两条边的比值
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn