假设,你正在开发一款iOS应用。

你的iOS应用有很多动画效果,而你(或你的设计师)希望让那些动画效果的持续时间恰到好处。那华丽的抽屉特效是应该耗时半秒钟,还是四分之三秒呢?

通常情况下,开发者会对合适的时间进行猜测,编译他们的应用程序,测试,修改,重新编译,清理,调整,周而复始。鉴于复杂的应用可能需要相当长的时间来进行编译,那些小小的变化就会开始吞噬你的时间,你开始痛恨进度条。

为什么要为了如此简单的东西进行重新编译呢?如果负责调整时间的人的角色更多的是设计师,而不是程序员,那会怎样呢?他们应该为了调整动画速度而去研究源代码吗?

当然了,这里面也有各种快捷方式。比如,你可以将动画速度的变量跟屏幕上的滑块进行关联,让那些测试应用预发布副本的用户可以实时进行调整——不过,你需要手动植入代码,并记得在正式发布前将之移除。这是完全有效的选择,但它不是很规范,而且你希望进行实时调整的每个地方都意味着额外的代码。这种事情可以更简单。

Facebook认为他们已经做到了。

该公司刚刚发布了一个名为“Tweaks”的库,让开发者可以方便地对特定事物进行标记——比如动画效果的时间,或者是按钮的颜色,或者是图片的透明度——并在使用设备实际运行应用时让开发者方便地进行实时调整。这个库把所有这些可调变量打包放到一个小小的隐藏设置页面上,等到正式发布应用时又将之全部清除。

正如Facebook说的那样:

改进一款应用的最好办法是每天使用它。虽然开发者可以提前把自己的想法构建成原型设计——比如使用Origami工具——但可能仍然需要一些时间来观察它在实际使用中的效果。

偶尔,应用在第一次尝试时即已完美。有时候,想法完全行不通。但更多的,开发者需要对应用进行一些微调。最后一种场景正是Tweaks的用武之地,它让那些细微的调整变得简单:不用更改代码,不用电脑,你就可以尝试不同的选项,并选出效果最好的设置。

当一款应用被编译到调试模式下,摇动手机可以弹出一个页面,让用户可以任意更改开发者开放出来的设置。当应用被编译成正常的“发布”模式(即它已经为在应用商店上架做好准备),Tweak的变量值就会被一个正常的、不可修改的值所替代,并且永久性地把配置页面隐藏起来。这样做你只需要添加非常少的额外代码,也不至于忘了将它们移除。

开发者在其代码中需要做的真正修改在于:他们不需要在源代码中写死变量值,而是将值设定成一个“Tweak”。在代码中,你不需要写成:

CGFloat animationDuration = 0.5 

而是使用:

CGFloat animationDuration = FBTweakValue(@”Category”, @”Group”, @”Duration”, 0.5); 

那么,这其中意义何在呢?

对开发者来说,这意味着可以使用更少的时间和代码对应用进行微调。而额外的好处是,它能够让那些不喜欢编码的设计师来帮助确定应用最佳设置,不需要他们深入源代码或是纠缠开发团队编译出众多新版本。大家都得到了好处!万岁!

Facebook已经在GitHub发布了Tweaks,开发者可以基于非限制性的BSD开源协议免费使用。(译:王灿均)

http://techcrunch.cn/2014/03/26/facebooks-new-tweaks-library-lets-developers-fine-tune-their-ios-apps-on-the-fly/

Facebook发布Tweaks:让微调iOS应用变得更简单的更多相关文章

  1. spring 第一篇(1-1):让java开发变得更简单(下)

    切面(aspects)应用 DI能够让你的软件组件间保持松耦合,而面向切面编程(AOP)能够让你捕获到在整个应用中可重用的组件功能.在软件系统中,AOP通常被定义为提升关注点分离的一个技术.系统由很多 ...

  2. [翻译]Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  3. Kafka Streams简介: 让流处理变得更简单

    Introducing Kafka Streams: Stream Processing Made Simple 这是Jay Kreps在三月写的一篇文章,用来介绍Kafka Streams.当时Ka ...

  4. 深入解析 Kubebuilder:让编写 CRD 变得更简单

    作者 | 刘洋(炎寻) 阿里云高级开发工程师 导读:自定义资源 CRD(Custom Resource Definition)可以扩展 Kubernetes API,掌握 CRD 是成为 Kubern ...

  5. 快开宝PDA开单器出入库扫码:让批发零售变得更简单

    快开宝PDA开单器出现前 批发商户是这样开单和管理的 ★员工痛苦:需要记客户.价格.库存等等,应对报错价.错漏单.盘错货等各种状况. ★老板麻烦:每天要守店.对单.核账,经常因错漏单.库存乱.积压货. ...

  6. 让全链路压测变得更简单!Takin2.0重磅来袭!

    自Takin社区版1.0发布两个多月以来,有很多测试同学陆续在各自的工作中运用了起来,其中包括金融.电商.物流.出行服务等行业.这个过程中我们收到了很多同学的反馈建议,同时也了解到很多同学在落地全链路 ...

  7. spring 第一篇(1-1):让java开发变得更简单(下)转

    spring 第一篇(1-1):让java开发变得更简单(下) 这个波主虽然只发了几篇,但是写的很好 上面一篇文章写的很好,其中提及到了Spring的jdbcTemplate,templet方式我之前 ...

  8. Moq让单元测试变得更简单

    [ASP.Net MVC3 ]使用Moq让单元测试变得更简单 前几天调查完了unity.现在给我的任务是让我调查Moq. 以下是自己找了资料,总结并实践的内容.如果有表述和理解错误的地方.恳请指正. ...

  9. Winform 让跨线程访问变得更简单

    Winform 让跨线程访问变得更简单 前言 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出 ...

随机推荐

  1. Arduino的小灯亮起来~~~

    呵呵呵~~~昨天宝宝,就守着板子,跟说明书,心里默念,怎么特么还不亮?这个 东西怎么还不出!?~ 我特么没插线,可不不出么... 然后找那跟儿蓝色(我这个是蓝色的,不知道 有没有别的颜色的)的带USB ...

  2. Haystack Python全文检索框架

    Haystack 1.什么是Haystack Haystack是django的开源全文搜索框架(全文检索不同于特定字段的模糊查询,使用全文检索的效率更高 ),该框架支持Solr,Elasticsear ...

  3. docker--docker版本以及安装

    3 docker 版本以及安装 3.1 docker 版本介绍 https://www.docker.com/ Docker CE 在 17.03 版本之前叫 Docker Engine, Docke ...

  4. oracle--单表查询

    ---单表的查询学习 --查询表的所有数据 select * from 表名;*代表所有 select * from emp; --查询表中指定字段的值 select 字段名1,字段名2,...fro ...

  5. MySQL练习与小结

    当你专注一件事的时候,时间总是过得很快! foreign key 练习 -- 切换数据库 use stumgr -- 删除班级表 drop table t_class1 -- 创建一个班级表 crea ...

  6. [BZOJ5099]Pionek

    Description 给 \(n\) (\(n\le 2\times 10 ^5\)) 个向量,现在你在 \((0,0)\) ,选择一些向量使你走的最远. Solution 自己的想法:按极角排序后 ...

  7. ES6精解:变量的解构赋值

    1.数组的解构赋值 我们知道以前我们给一个变量赋值要这样如下: let a = 1; let b = 2; let c = 3; 但是ES6出来之后,我们可以这样: let [a, b, c] = [ ...

  8. [THUPC2018] 弗雷兹的玩具商店

    link $solution:$ 好久没写数据结构了,那就写道简单题吧! 可以发现 $m\leq 50$,所以可以去取在 $[l,r]$ 中当价格相同时愉悦值最高的做完全背包 $dp$ . 发现修改价 ...

  9. winform datagridview 绑定泛型集合变得不支持排序的解决方案

    原文:winform datagridview 绑定泛型集合变得不支持排序的解决方案 案例: 环境:Winform程序 控件:Datagridview 现象:Datagridview控件绑定到List ...

  10. C# String的几种比较方法对比(Compare,CompareTo, CompareOrdinal、Equals)

    原文:http://blog.csdn.net/wushang923/article/details/7527499 注意点:切换方法的时候要注意返回值引起的变化!!! 1.Compare会通过传递进 ...