Список выбранного ещё не является списком сохранённого
Представим учебный загрузчик для восьми снимков: дом, мост, дерево, лодка, окно, площадь, фонарь и облако. После выбора он показывает все восемь миниатюр. Это удобно для проверки состава подборки, но само по себе не сообщает, какие файлы уже находятся на сайте. В веб-приложении предварительный просмотр может работать с локальными файлами. Поэтому полезный интерфейс отдельно обозначает состояние каждого элемента. Для нашей модели используем четыре состояния: выбран, отправляется, сохранён, ошибка. В настоящем сервисе названия могут отличаться, а после передачи возможна дополнительная обработка. Пользователю важно найти именно подтверждение конечного результата, соответствующего задаче, а не полагаться только на появление картинки в очереди.
Общая цифра не должна скрывать частичный результат
Допустим, после первой попытки три снимка подтверждены как сохранённые, два получили ошибку формата, а три ещё ожидают отправки. Все восемь остаются в списке, но завершёнными являются только три. Сумма трёх состояний равна исходному числу файлов: три плюс два плюс три дают восемь. Такой подсчёт помогает заметить пропущенную строку, но не заменяет проверки самих изображений. Теперь представим, что две разные фотографии имеют одинаковое имя файла. Совпадение имени не доказывает, что это один и тот же снимок. А разные названия не исключают одинакового содержимого. В учебной очереди лучше присвоить каждому элементу собственный номер и связать его с миниатюрой. При разработке настоящего загрузчика идентификатор элемента позволяет точнее сопоставлять запросы и ответы, чем одно только отображаемое название.
Повтор начинайте с выяснения состояния
Если связь оборвалась после отправки, отсутствие ответа ещё не объясняет, сохранил ли сервер файл. Немедленная повторная загрузка всей подборки может оказаться лишней. Сначала следует проверить доступный список результатов или обновить статус предусмотренным сервисом способом. Возможность такой проверки зависит от конкретного приложения. Ошибку формата тоже нельзя устранить одним переименованием расширения. Список допустимых типов в окне выбора помогает пользователю, но не заменяет проверку файла на сервере. Для безопасной работы с подборкой полезно сохранять исходники отдельно и разбираться в конкретной причине отказа. Наша бумажная модель не задаёт универсальных ограничений размера и форматов: эти условия определяются используемым сервисом и должны быть явно описаны в его интерфейсе.
Попробуйте на практике
Составьте на бумаге журнал массовой загрузки восьми вымышленных фотографий. Настоящие файлы и отправка на сайт не нужны.
- Создайте восемь строк с номерами и названиями: дом, мост, дерево, лодка, окно, площадь, фонарь, облако. Оставьте место для состояния и результата проверки.
- Отметьте первые три снимка как сохранённые, следующие два как получившие ошибку формата, последние три как ожидающие отправки. Проверьте, что каждая строка имеет ровно одно текущее состояние.
- Вообразите, что отправка снимка площади завершилась без полученного ответа. Запишите его состояние как неизвестное и укажите, что необходимо проверить результат на стороне сервиса перед повтором.
- Составьте план продолжения отдельно для подтверждённых сохранений, ошибок формата, ожидающих файлов и неизвестного исхода. Не объединяйте их в команду повторить всё.
Как проверить результат. Все восемь элементов учтены. Три подтверждённых сохранения отделены от незавершённых действий, а потеря ответа не объявлена доказанной неудачей. План предусматривает проверку неизвестного исхода до повторной отправки.
Частые вопросы
Полоса дошла до конца. Значит, файл уже опубликован?
Не обязательно. Она может показывать только передачу данных. Завершение обработки, сохранение и публикация могут быть отдельными состояниями, которые следует различать.
Если видны восемь картинок, зачем проверять названия?
Миниатюры помогают проверить содержание, а названия и номера связать изображения с результатами. Совместная проверка полезнее одного общего количества.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.