一个网站建设多少钱,商业设计要点,厦门海沧网站建设,网站后台管理系统功能据Facebook工程师Ashwin Bharambe、Zack Gomez及Will Ruben报道#xff0c;作为Facebook最新应用之一的Moments正使用C实现跨iOS和Android平台共享业务逻辑。这里#xff0c;我们将回顾一下Facebook工程师给出的选择C的理由和结果。\\对于Moments应用#xff0c;为了“只关注…据Facebook工程师Ashwin Bharambe、Zack Gomez及Will Ruben报道作为Facebook最新应用之一的Moments正使用C实现跨iOS和Android平台共享业务逻辑。这里我们将回顾一下Facebook工程师给出的选择C的理由和结果。\\对于Moments应用为了“只关注客户端以及尽可能地缩短开发-运行-测试周期”Facebook工程师决定将服务器端逻辑移到客户端。这种选择的缺点是代码量的增加他们不得不为他们起初针对的两个平台iOS和Android编写代码。\\跨平台共享代码有许多可选方案Facebook工程师决定“用特定于平台的代码编写UI使用C共享代码编写业务逻辑”。虽然缺少高级抽象使程序员不得不自行处理内存管理但C被认为是一种可以提供高性能的语言。而且借助std::shared_ptr、lambda表达式和auto声明等现代C特性Facebook程序员“能够快速实现性能高且内存安全的代码”。\\为了尽力保持C层API的简洁Facebook工程师作出了以下几项基本选择\\函数式编码风格这意味着“原始数据对象会默认转换成可变视图模型。” \\ 单向数据流包括“即发即弃fire-and-forget的变化和方法用于计算特定视图所需的视图模型”。 \\ 缓存“用于避免重复计算没有变化的中间结果”性能分析显示这是合理的。\在Android平台上还有一个额外的问题就是生成特定平台代码的绑定。为此Facebook工程师使用Dropbox的Djinni将视图模型从C转换到Java。为了更好地匹配他们的函数式方式及优化垃圾收集他们还重写了Djinni代码生成器。在iOS上可以使用Objective-C实现与C代码的无缝集成。\\这种方法已经使他们可以跨iOS和Android平台共享Moments的大部分业务逻辑共享代码约占每个平台代码库的三分之一。最后Facebook工程师指出借助这种方法他们“能够创建新特性而且工作量更小、Bug更少”并且还“可以在这两个平台之间更灵活地分配工程时间实现在两个平台上同步交付”。\\查看英文原文:Facebooks Moments App Does C for Cross-Platform Development