Соглашение об именовании методов и свойств в Swift. Могу ли я использовать ключевые слова «get», «set» и «is»?

#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 это явно соответствует правилу «Использование логических методов и свойств должно читаться как утверждения о получателе». Так что да, вы должны использовать его для логических членов.