军规16 尽量不使用非标准控件
在特定的操作系统版本上,如果想要App支持某种特性,可是操作系统并没有提供这种特性,开发人员很可能会自己设计控件,或者使用第三方库来实现这个功能。
但是这么做却会带来一些问题。接下来以App可以切换主题(Theme)这个特性为例(如图16.1所示)具体说明一下。
图16.1 不少App都支持在App中切换主题的功能
在iOS 4中App如果想提供用户切换App主题颜色的功能,就需要App自己实现相应的代码,因为iOS 4.x操作系统并不提供相应的功能。而当iOS操作系统升级到iOS 5的时候,开发者可以使用iOS 5新增的UIApperance协议定义一些可以自定义外观的控件。到了iOS 7时,开发者可以只使用着色(tintColor)属性来设置控件的颜色,以实现App主题颜色的切换(如图16.2所示)。
图16.2 对于如何实现在App中切换主题颜色,不同iOS版本实现的方式也不相同
通过这个例子可以看到,如果App在iOS 4就实现了主题颜色切换的功能,也就是App自己实现了对应的代码,当iOS操作系统升级到iOS 5之后,实现的方式改变了,如果需要把主题颜色切换功能的实现代码切换到iOS 5上使用UIApperance的方式,就需要对于所有涉及到这些代码的功能进行回归测试。
如果不使用iOS 5原生代码支持的实现方式,还是保持之前代码的实现方式,当iOS操作系统升级到iOS 7时,就会发现新版iOS原生代码提供的实现方式大大方便了App的开发、维护和测试工作。如果还按照以前的方式来实现代码,随着iOS操作系统的升级,这些代码会越来越臃肿和复杂。这是因为后来添加的很多功能代码都是基于这些代码添加的,而之前的这些代码都成为了App代码的基础设施,随着时间的推移,想要替换这些基础设施的开发和测试的代价会越来越大,而不替换这些基础设施,开发和测试的代价会更大。
同样还有一个例子,是关于iOS操作系统上的小工具Widget的(如图16.3所示)。
图16.3 从iOS 8开始支持的小工具Widget
本文选自《移动App测试的22条军规》第十六章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。