> For the complete documentation index, see [llms.txt](https://appsecurity.gitbook.io/offensive/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://appsecurity.gitbook.io/offensive/programming/untitled/yap/swift/swift-style-guide.md).

# Swift Style Guide

## Общее

* KISS(Keep it simple and stupid)
  * Создаем небольшие методы, выполняющие примерно то, что от них ожидают.&#x20;
  * Каждый метод решает одну небольшую проблему.
  * Длинные проверки разбиваем на отдельные переменные.

    ```swift
    if (a > b || (c != d)) && (d < k && a < k) {
        print("Good job!")
    }
    // Заменяем на 
    let jobIsGood = a > b || (c != d)`
    let jobIsDone = (d < k && a < k)
    if jobIsGood && jobIsDone {
        print("Good job!")
    }
    ```
* Комментарии
  * Если коду нужны комментарии, возможно, стоит пересмотреть его структуру, стараемся писать самодокументируемый код, но есть ряд случаем, где комментарии улучшают понимание.
* Избегаем magic numbers, используем Сonstants вместо этого.

  *Исключения*: верстка UI в коде и настройка свойств у UIKit компонентов, например, задание цвета, шрифта.
* DRY(do not repeat yourself)
  * Избегаем дублирование кода, если код используется больше, чем в 1-ом месте, возможно, его стоит вынести в отдельную переменную, метод или объект.
* Unused code
  * Всегда удаляем не используемый код. Это пустые методы, не используемые переменные, устаревшие комментарии и import'ы.
* Уменьшаем вложенность if, вынесение проверок в отдельные методы.
* Строки выносим в Localized strings, если используется больше 1-ого раза.
* Ясность важнее краткости. Выделяем время для написание кода, оптимизированного для чтения. *Код читается гораздо чаще, чем пишется.*

## Соглашение о стиле кода

<https://swift.org/documentation/api-design-guidelines/>

<https://github.com/raywenderlich/swift-style-guide>
