Я заметил, что очень популярный метод определения констант в Swift выглядит так:
struct Constants {
static let fileDownloadTimeOut: TimeInterval = 45 * 60
static let timeout: TimeInterval = 60
static let perPageCount = 10
static let usersPerPageCount = 15
}
С одной точки зрения - это выглядит очень аккуратно и красиво, когда дело доходит до синтаксиса. НО проблема, которую я нахожу, заключается в чрезмерном использовании статических переменных.
Насколько я знаю, static
переменные ведут себя в Swift
так же, как и в C++
. Эти переменные инициализируются во время компиляции и остаются в памяти до тех пор, пока приложение не станет мертвым.
Проблемы, с которыми я сталкиваюсь при таком подходе, следующие:
1) Загрязнены RAM
. Я понимаю, что те времена, когда разработчики экономили каждый байт памяти, прошли, но все же это не означает, что мы не должны должным образом поддерживать наши ресурсы хранения.
2) У меня большой опыт C++
, и я нахожу такую технику как "плохой вкус". Меня всегда не поощряли использовать static
переменные для «синтаксического сахара», и поэтому я привык создавать переменную static
только тогда, когда мне это абсолютно необходимо.
Дело в том, что я довольно долго искал в интернете, чтобы найти другие предложения по хорошему определению констант в Swift
, но я ничего не нашел, кроме этого подхода со структурой со связкой статических переменных.
Я понимаю подход с static let
константами, когда дело доходит до создания Singleton
или объекта, который живет вечно, пока приложение не умрет. Но я заметил, что этот точный подход также рекомендуется для использования в контроллерах представления или других временных объектах, и логически это неправильно.
Я слишком остро реагирую на эту тенденцию, и это одна из вещей, которая изменилась и была принята другими разработчиками? Я надеюсь получить некоторые мнения по этому вопросу.
Заранее спасибо!