Swift Style Guide. Часть 1. Наименования

Sergei Kononov
Aug 31, 2018 · 3 min read

Давно интересовался как профессиональные iOS разработчики стилизируют свой код. Наткнулся на статью Ray Wenderlich про Swift стайлгайд от него https://github.com/raywenderlich/swift-style-guide и решил поделиться ею на русском языке. Сейчас речь пойдет о первой главе Наименования

Общие правила:

  • Ясно и понятно называйте переменные/функции
var a // Плохо
var user // Хорошо
  • Объявляйте переменные кратко, но не забывайте про первый пункт
  • Используйте ГорбатыйРегистр
var userlist // Плохо
var userList // Хорошо
  • Используйте Заглавные буквы для наименования типов(классов, структур, протоколов), для остального прописные буквы
class list {  // Плохо
}
class List { // Хорошо
}
  • Включайте только все необходимые слова в названия
var annotation // Плохо
var userAnnotationView // Хорошо
  • Название должно обозначать роль, а не тип объекта
var integer // Плохо
var count // Хорошо
  • Методы, которые играют роль создания чего-либо начинаются со слова make
func customButton() {   //Плохо
}
func makeCustomButton() { //Хорошо
}
  • Методы с глаголами называют по правилу -ed, -ing для неизменяемых методов
  • Булевые методы должны читаться как утверждение (например isHiden)
  • Протоколы, описывающие что-то, должны быть существительными
  • Протоколы, описывающие что ты должен сделать, должны оканчиваться на -able или -ible
  • Используйте выражения, которые не удивляют профессионалов и не пугают начинающих разработчиков
  • Желательно вообще избегать сокращений
  • Предпочитайте методы и свойства простым функциям
  • Названия метода должно соответствовать его значению
func appentUserToList() {
//считает овец
} // Плохо
func appentUserToList() {
//добавляет пользователя
} // Хорошо
  • Выбирайте понятные названия для параметров. Они могут служить как мини документация
func appentUserToList(a: User, b: [String]) {
} // Плохо
func appentUserToList(user: User, listOfUsers: [String]) {
//добавляет пользователя
} // Хорошо
  • По возможности используйте параметры по умолчанию

Понятность:

Когда речь идет о методах, то называть их надо по следующим правилам:

  1. Пишите названия методов без параметров. Например: addTarget
  2. Пишите методы с названиями агрументов. Например: далее делаем addTarger(_:action:)
  3. Дальше напишите полное имя метода с описанием и типом параметров. Например: addTarget(_: Any?, action: Selector?).

Профессиональные фишки: Можно использовать Xcode на каком-либо объекте/классе и посмотреть как наименовывают методы:

Делегаты

При создании методов делегата, неназванный первый параметр должен быть делегатом (UIKit содержит многочисленные примеры этого)

func namePickerView(_ namePickerView: NamePickerView, didSelectName name: String)
func namePickerViewShouldReload(_ namePickerView: NamePickerView) -> Bool
//Хорошо
func didSelectName(namePicker: NamePickerViewController, name: String)
func namePickerShouldReload() -> Bool
//Плохо

Использовать тип зависимого контекста

Используйте компилятор для вывода более короткого, чистого кода.

let selector = #selector(viewDidLoad)
view.backgroundColor = .red
let toView = context.view(forKey: .to)
let view = UIView(frame: .zero)
//Хорошо
let selector = #selector(ViewController.viewDidLoad)
view.backgroundColor = UIColor.red
let toView = context.view(forKey: UITransitionContextViewKey.to)
let view = UIView(frame: CGRect.zero)
//Плохо

Generics

Параметры типов в дженериках должны быть описаны именами в горбатом стиле. Если имя типа не имеет значимых отношений или роли, используйте традиционную прописную букву, такую как T, U или V.

struct Stack<Element> { ... }
func write<Target: OutputStream>(to target: inout Target)
func swap<T>(_ a: inout T, _ b: inout T)
//Хорошо
struct Stack<T> { ... }
func write<target: OutputStream>(to target: inout target)
func swap<Thing>(_ a: inout Thing, _ b: inout Thing)
//Плохо

Язык

Используйте US английский. Это так же рекомендует делать Apple’s API.

let color = "red"
//Хорошо
let colour = "red"
//Плохо

Просьба

Может я где-то мог неграмотно рассказать о чем-то, если заметите неточность, то сообщите и я поправлю:)

Sergei Kononov

Written by

Student at the Novosibirsk State Technical University

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade