Swift 和 Objective-C

分享:

这些问题仅向选择 Swift 或 Objective-C 作为其三种主要编程语言之一的开发者显示。

您为哪个(哪些)Apple 平台开发?

91%

iOS

34%

macOS

10%

watchOS

4%

tvOS

3%

我不为 Apple 平台开发

您是否在同一个项目中同时使用 Swift 和 Objective-C

62%

是,我的代码库大部分都用 Swift 编写

23%

是,我的代码库大部分都用 Objective-C 编写

16%

大多数正在创建的新项目都是以 Swift 编写,但大公司仍然经常支持遗留的 Objective-C 框架

Krzysztof Zabłocki

Sourcery 和其他驱动 8 万多个应用程序的 OSS 项目的创建者

您是否为 Swift 或 Objective-C 开发编写单元测试?

跨平台开发者

全部

移动开发者

跨平台开发者:使用跨平台技术的 Swift 或 Objective-C 用户。移动开发者:为移动平台开发的 Swift 或 Objective-C 用户。

社区中的测试在过去几年中变得更好了,但与其他堆栈相比仍然很糟糕。部分原因是缺乏来自 Apple 的适当教育,部分原因是架构选择不当,因为针对 MVC 编写测试比其他架构模式更复杂。

Krzysztof Zabłocki

Sourcery 和其他驱动 8 万多个应用程序的 OSS 项目的创建者

Swift/Objective-C 开发者仍然有很大的机会接受单元测试。这样做的人将会脱颖而出。

Jon Reid

Industrial Logic 的教练和培训师,iOS Unit Testing by Example 的作者

您经常使用哪种(哪些)单元测试框架?

94%

XCTest

11%

Quick + Nimble

2%

其他

Apple 对 XCTest 和 Xcode 测试支持进行了重大改进。与过去几年相比,我发现使用替代框架的人减少了很多,因为学习曲线和处理支持问题的成本通常超过收益。

Krzysztof Zabłocki

Sourcery 和其他驱动 8 万多个应用程序的 OSS 项目的创建者

您使用哪种(哪些)mock/匹配器框架?

6%

OCMock

5%

SwiftHamcrest

5%

OCMockito

3%

Cuckoo

1%

OCHamcrest

2%

其他

81%

您是否使用 UI 测试?

跨平台开发者

移动开发者

全部

UI 测试运行起来要慢得多,而且通常不太可靠,不适合 TDD 工作流,大多数公司不会在每个 PR 上运行它们。它们会被安排在 CI 或夜间构建上。

Krzysztof Zabłocki

Sourcery 和其他驱动 8 万多个应用程序的 OSS 项目的创建者

您经常使用哪种(哪些)UI 测试框架?

71%

XCTest

14%

iOSSnapshotTestCase

13%

EarlGrey

8%

KIF

4%

其他

您使用哪种依赖项管理器?

61%

CocoaPods

47%

Swift Package Manager

11%

Carthage

1%

其他

18%

75%

CocoaPods

41%

Swift Package Manager

12%

Carthage

2%

其他

11%

69%

CocoaPods

47%

Swift Package Manager

12%

Carthage

2%

其他

12%

您是否计划将 CocoaPods 依赖项替换为 SPM 软件包?

您使用哪种数据库引擎/框架组合?

31%

Firebase

28%

CoreData

28%

SQLite 加上我自己的包装器

24%

Realm

1%

YAPDataBase

3%

其他

26%

41%

Firebase

23%

CoreData

37%

SQLite 加上我自己的包装器

27%

Realm

4%

其他

20%

35%

Firebase

29%

CoreData

29%

SQLite 加上我自己的包装器

28%

Realm

1%

YAPDataBase

3%

其他

21%

您是否在 Linux 上使用 Swift 开发?

5%

13%

否,但我计划在未来 12 个月内这样做

83%

否,并且我没打算在未来 12 个月内这样做

您是否使用 Swift 开发服务器端项目?

2021 年

2022 年

这里缓慢的采用率并不让我感到惊讶,因为与替代方案相比,它仍然是一个相当新的堆栈。但我和一群在服务器上使用 Swift 的工程师交谈过,我听到的都是对它表现的夸奖。

Krzysztof Zabłocki

Sourcery 和其他驱动 8 万多个应用程序的 OSS 项目的创建者

Swift 和 Objective-C:

2022

感谢您的参与!

我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。

如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com