Программирование
6 советов, как улучшить программирование в Swift
Надеюсь, эта статья поможет вам.
В этой статье я даю короткие советы по улучшению качества Swift-кода.
1. Попробуйте использовать типы значения (value types).
Типы значений легче, чем классы.
❌
class Person { /// is a data model | |
let name: String | |
let nickName: String | |
} |
✅
struct Person { | |
let name: String | |
let nickName: String | |
} |
2. Используйте «!» как можно меньше и используйте «!» только в локальном коде.
Это гарантирует, что будет меньше сбоев.
❌
var num: String? | |
/// … | |
let num2 = num! |
✅
var num: String? | |
… | |
guard let temp = num else { | |
print(“num is nil”) | |
return | |
} | |
let num2 = temp |
3. Используйте детерминированные типы и сократите использование Any/AnyObject.
Неоднозначный тип всегда является источником ошибок.
❌
func doSome(data: Any?) { | |
guard let string = data as? String else { | |
return | |
} | |
// … | |
} |
✅
func doSome(data: String) { | |
/// ... | |
} |
4. Используйте детерминированный тип и используйте пользовательский тип для замены словаря.
Ключевое значение Dictionary имеет неопределенность типа.
❌
let dic: [String: Any] | |
let num = dic["value"] as? Int | |
dic["name"] = "name" |
✅
struct Info { | |
let num: Int | |
var name: String? | |
} | |
let num = info.num | |
info.name = "name" |
5. Используйте перечисления и константы вместо жесткого прописывания кода.
Жесткое прописанный код нелегко контролировать, а его изменение всегда будет непонятно.
❌
register(appId: “xxxx”) | |
join(appId: “xxxx”) | |
leave(appId: “xxxx”) |
✅
static let appId = “xxx” | |
/// … | |
register(appId: appId) | |
join(appId: appId) | |
leave(appId: appId) |
6. Используйте KeyPath вместо жесткого прописывания строки.
В строке легко ошибиться, надежнее проверить компилятором
❌
class SomeClass: NSObject { | |
@objc dynamic var someProperty: Int | |
init(someProperty: Int) { | |
self.someProperty = someProperty | |
} | |
} | |
let object = SomeClass(someProperty: 0) | |
object.observeValue(forKeyPath: "someProperty", of: nil, change: nil, context: nil) |
✅
let object = SomeClass(someProperty: 0) | |
object.observe(\.someProperty) { object, change in } |
Надеюсь, эта статья поможет вам. Кроме того, у вас есть вопросы? Вы можете оставить мне сообщение.
-
Программирование3 недели назад
Конец программирования в том виде, в котором мы его знаем
-
Видео и подкасты для разработчиков6 дней назад
Как устроена мобильная архитектура. Интервью с тех. лидером юнита «Mobile Architecture» из AvitoTech
-
Магазины приложений3 недели назад
Магазин игр Aptoide запустился на iOS в Европе
-
Новости3 недели назад
Видео и подкасты о мобильной разработке 2025.8