Определение констант в Swift - PullRequest
1 голос
/ 08 апреля 2019

Я заметил, что очень популярный метод определения констант в 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 или объекта, который живет вечно, пока приложение не умрет. Но я заметил, что этот точный подход также рекомендуется для использования в контроллерах представления или других временных объектах, и логически это неправильно.

Я слишком остро реагирую на эту тенденцию, и это одна из вещей, которая изменилась и была принята другими разработчиками? Я надеюсь получить некоторые мнения по этому вопросу.

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...