Вся причина для опций заключается в предотвращении сбоев во время выполнения, вызванных ударом переменной, назначенной nil/null/none. Следовательно, переменные не могут быть nil; вместо этого они могут быть завернуты в необязательный тип, который представляет их как Some или None, и разворачивается для получения определенного содержимого Some или nil.
Но если вы разворачиваете их повсюду с помощью ! или с помощью неявно освобожденных опций, вы просто вводите эту возможность, так как вы несовершенный кодер, из-за сбоев во время выполнения. Если вы используете if let, чтобы безопасно разворачивать их, вы избегаете сбоев, но вы застреваете внутри области действия оператора if let для работы со значением внутри Some, и вам все равно придется обрабатывать потенциальный случай nil. Если вы используете? для временного разворачивания вызова метода, он будет завершен после завершения, введя беспорядочную возможность многоуровневой дополнительной упаковки.
Итак: Мне кажется, что нужно сделать это, избегая опций, кроме случаев, когда это необходимо (например, при вызове методов инфраструктуры, которые возвращают их). Но если я не использую опции, это означает, что мои ссылки на объекты должны быть не равными нулю, и я не могу понять, как обрабатывать случаи, когда по той или иной причине не должно быть или нет, значение, присвоенное объектной ссылке.
Мой вопрос: как мне избежать необходимости в нуле? Похоже, для этого требуется другой подход к программированию. (Или я должен использовать только опции, и если это то, что я делаю, как это лучше, чем просто иметь нулевые назначения для ссылок на объекты, например, на других языках?)
Я знаю, что это потенциально субъективный вопрос, но где еще я должен его спрашивать? Я не пытаюсь троллить или возбуждать дебаты, мне бы очень хотелось узнать, какой правильный подход, поскольку я пишу более быстрый код.