Я хочу сказать, что в некоторых местах мы знаем, что переменная вообще не будет иметь nil, но по какой-то причине мы не можем создать ее экземпляр в функции инициализации класса, поэтому мы должны сделать ее необязательной.
Я также знаю, что мы можем использовать необязательные методы связывания или защиты, чтобы легко избавиться от него.
Но, по моему мнению, разработчикам на этапе разработки выгодно допускать сбой приложения из-за действительно глупых ошибок из-за неявной развертки/принудительной развертки.
Мой пример:
class TopStoriesViewModelTests: XCTestCase {
var viewModel: TopStoriesViewModel!
override func setUp() {
super.setUp()
viewModel = TopStoriesViewModel(interactor: MockTopStoriesInteractor())
}
func testArticleDidVisited() {
viewModel.visited = xxxxxx
}
}
В этом случае я могу сделать TopStoriesViewModel
?
, а затем охранять его или разрешить его в каждом тестовом случае, но я чувствую, что это не обязательно. Я знаю, что тоже могу использовать viewModel?.xxx
. Но дело не в этом.
Мой вопрос в том, прав ли я в том, что в некоторых определенных обстоятельствах, таких как пример, который я привел, полезно иметь принудительно развернутое/неявно развернутое.
return
, если ониnil
, тем самым затрудняя диагностику проблем. И если вы собираетесь сделать что-то вроде вызоваfatalError
, когда необязательным былоnil
, когда этого не должно быть, то вы точно так же сделаете принудительную распаковку. - person Rob   schedule 15.06.2018