Comments 8
Вообще было бы здорово если бы в других областях так же применялось это правило.
Допустим копирование/вставка файлов. При первой же ошибке/запросе весь процесс встаёт, хотя было бы гораздо логичнее если бы процесс продолжался и тупо пропускал файлы с ошибкой/требующих запроса. Сейчас ты ставишь на копирование огромную папку и всё минут через 5 может уткнуться в вопрос типа: «файл уже существует, что делать: заменить?/остановить весь процесс?/переименовать?». Блин, ну что мешает копировать остальные файлы дальше (если это возможно)? Пользователь вернётся, разгребет вопросы, а остальная часть копирования уже к тому времени завершится.
Вроде бы Total Commander так умеет, еще с версии 8.50
https://habr.com/ru/post/213287/
Файловые операции стали умнее. Копирование не будет останавливаться на нечитаемых файлах, TC сначала скопирует то, что сможет, и только потом спросит «а что делать с этим?». При этом, если файлы не читаются сразу же, диалог появится — подразумевается, что пользователь ещё не успел отойти от компьютера.
Тотал молодец, там это продуманно, а сколько мест где это не продуманно — тьма.
Подобные же затыки встречаются в куче разных мест: подтверждение соглашений посредине установки больших программ, ошибка в середине очереди рендеринга, скачивание больших файлов из интернета: тьма моментов когда система падает кверху лапками со стоном «не шмогла», когда логичнее тупо попытаться заново с текущей задачей или хотя бы перейти автоматически к следующей.
Так же бесит когда какое-то действие замораживает все систему напрочь. К примеру: у меня фото хранятся в облачном хранилище icloud, допустим я хочу их добавить в общий альбом или отправить кому-то по telegram. Сначала iOS должна скачать выбранные фото и только потом я могу выбрать в какой альбом их добавить или какому контакту отправить. Это тупо, так как порой скачка занимает 10-15 минут и в это время телефоном нельзя пользоваться, любое нажатие сбросит процесс. Потом ещё надо минут 5-10 ждать пока они отправятся в телеграмм или куда ты там выбрал.
Как должно быть: я выбираю фото для отправки и сразу выбираю адресата в мессенджере, а дальше система молотит все в фоне. Примерно так работает стандартная почта: я отправляю письмо, оно перемещается в исходящие, а дальше при наличии интернета оно отправляется в фоне.
Вот с мессенджерами и другими вопросами так же должно быть: нет интернета или ещё какой затык? Поставь задачу в очередь и молоти её на фоне при наличии возможности.
В этом плане мне очень нравится логика дропбокса или подобных облачных хранилищ. Допустим мне надо отправить кому то 50 гигабайт фото/видео со съёмки. Я делаю папку в Дропбокс (resillio sync), расшариваю её и отправляю ссылку заказчику. Параллельно ставлю на рендер фото (или видео) и ухожу по делам. Рендер закончится через час/два, потом эти файлы автоматически закачаются в облако, а при resillio sync прямо на компьютер заказчику, да ещё и с проверкой контрольных копий.
А раньше бы пришлось сначала все рендерить, потом закачивать на FTP, да ещё и следить чтобы без обрывов. А если обрыв то удалять/догружать файл, короче то что сейчас автоматизировано раньше приходилось тащить вручную. И вот везде где возможно лучше автоматизировать, не надо парить пользователя лишними подтверждениями, алертами и остановками: есть задача, так делай ее пока есть возможность, нет возможности, так делай что можешь и потом возвращайся к пропущенным задачам.
Ошибка – это не UIAlertController