#swift #naming-conventions
#swift #соглашения об именовании
Вопрос:
Могу ли я при создании функции в Swift использовать слова «get» и «set»? Например, могу ли я объявить функцию как func getAuthorizedUsers()
вместо func authorizedUsers()
? В ObjectiveC ключевые слова get и set не рекомендуется использовать при объявлении функций. Как насчет в Swift?
Также при объявлении свойств я могу использовать ключевое слово «is»? Например:
public var isAuthorized: Bool {
get {
return true
}
}
Я прочитал документы соглашения об именовании Swift, но не смог найти ответа на свой вопрос. Спасибо.
Комментарии:
1. Вы определенно хотите ознакомиться с этим руководством по стилю … google.github.io/swift
2. Зачем понижать рейтинг? Я видел множество примеров фрагментов кода swift, включая имена методов, начинающиеся с get или set, даже в stack overflow. Я не думаю, что мой вопрос бесполезен.
Ответ №1:
Все правила изложены здесь.
Для get
это явно нарушает правило «Опускать ненужные слова». Если метод возвращает что-то, сайт вызова будет знать, что он используется для получения некоторого значения. Вам не нужно повторять эту идею. Вы можете рассмотреть возможность преобразования этого в вычисляемое свойство, если параметры не требуются.
Для set
иногда это может быть уместно. Если вашему методу нужен только один параметр и есть соответствующий способ получения,
func getFoo() -> Int {
...
}
func setFoo(_ foo: Int) {
...
}
Это довольно хороший признак того, что это можно превратить в вычисляемое свойство:
var foo: Int {
get { ... }
set { ... }
}
Хорошим примером, когда уместно иметь set
, является UIButton.setTitle
метод. Оно принимает два параметра, поэтому вычисляемое свойство не будет работать.
Для is
это явно соответствует правилу «Использование логических методов и свойств должно читаться как утверждения о получателе». Так что да, вы должны использовать его для логических членов.