使用 Objective C 编写更模块化和可测试的 iOS 应用程序的建议

Posted

技术标签:

【中文标题】使用 Objective C 编写更模块化和可测试的 iOS 应用程序的建议【英文标题】:Suggestion for writing more modular and testable iOS app using Objective C 【发布时间】:2011-04-07 06:02:46 【问题描述】:

我正在使用 Objective C 为 ios 设备编写应用程序。

看起来编写的代码是紧耦合的,重用非常困难。

对于使用 Objective C 编写更模块化的 iOS 应用程序有什么建议吗?特别容易测试。

【问题讨论】:

【参考方案1】:

还有一些建议,我认为这是 objc 程序中的常见问题:

比一般的 objc 开发人员更喜欢协议而不是子类化(非常重要)

偏爱更小、更专业的对象

最小化全局对象(例如单例)

经常重复使用和测试

了解并接受 objc 类型/运行时的动态特性。不要只是将您最熟悉的语言的习语应用/近似于 objc。很有可能,您的程序会受到影响。

代码重用/后端:偏爱 C、C++、苹果的分布式类型和协议

将重要程序中的包/子库存根。这些应该独立构建。

注意您要重新实现的内容,并将通用实现移至库中

保持库小而专注,并注意它们的依赖关系。还期望该库可以在许多情况下使用。保持低警告,简单的公共接口,并使用漂亮的冗长描述性名称和前缀以避免平面命名空间中的冲突。

【讨论】:

【参考方案2】:

您应该编写面向对象的代码;编写模块化、可重用、可测试对象的所有标准最佳实践在 Objective C 中的应用与在任何其他语言中一样多。

您有什么理由认为 Objective C 在这方面有所不同?

【讨论】:

【参考方案3】:

以下是一些建议:

尝试将可重用组件作为单独的库子项目。 XCode 可以处理项目中的项目。 使用类别来扩展或修改内置类的行为。组件与您的其余代码隔离,非常易于测试 确保遵循 MVC 模式并且不要使控制器膨胀。将应用程序逻辑放在模型类中,这样它们就不会依赖于视图,这使得测试变得困难。

【讨论】:

以上是关于使用 Objective C 编写更模块化和可测试的 iOS 应用程序的建议的主要内容,如果未能解决你的问题,请参考以下文章

如何编写具有可测试性的代码

markdown 编写可测试JavaScript的资源

设计模式简记-通过重构增强代码可测试性实战

设计模式简记-通过重构增强代码可测试性实战

如何提高软件的可测试性?

使方法可测试单元测试c#