Эта статья — редкая жемчужина в море сообщений разработчиков iOS в наши дни. Вместо того, чтобы учить хорошим практикам, многие оказывают начинающим разработчикам плохую услугу, провозглашая защитное программирование. Как и Макс Альтхофф, я твердо верю, что такие операции, как принудительная распаковка, имеют свое место в языке Swift и придают серьезное значение бизнес-требованиям. Если основной зависимости вашего кода просто не существует, когда вы пытаетесь развернуть ее, вы наверняка выстрелите себе в ногу ранним guard-let-return, вместо того, чтобы бросать осмысленный ошибка, которая затем попадает выше по цепочке. Удачной отладки, обнаружения проблемы в приложении, которое «просто работает» все время!

Я работаю над отказоустойчивыми серверными системами уже почти десять лет, и у меня появилось довольно сильное чувство отвращения к защитному программированию. У меня было много шансов убедиться своими глазами, что, если позволить чему-то выйти из строя, это можно исправить быстрее и на более длительный срок, а не прятать это под ковер. Относительно новичок в программировании для iOS, я, возможно, недооцениваю последствия для пользовательского опыта, когда приложение падает на глазах у пользователя, но я считаю, что решение любой проблемы в разработке программного обеспечения — это правильная архитектура.

Вместо того чтобы сосредотачиваться на том, чтобы обернуть каждую вторую строку моего кода с помощью if let и guard-let-return, я бы предпочел, чтобы некоторые из неудачных вещей терпели неудачу и отлавливали эти ошибки вверх по стеку, где происходит взаимодействие с пользователем. Вместо этого я трачу время на то, чтобы добавить кучу тестов в свою кодовую базу.

Подводя итог, пожалуйста, не просто слепо применяйте правило принудительной развертки № 2 из вещей, которые вы или ваша команда никогда не должны учитывать (№ 1, конечно же, выдает фатальную ошибку). Вместо этого примите ошибочный характер кода и используйте его в своих интересах.