redis: (Default)
[personal profile] redis
- Ты вот сидишь, штаны просиживаешь, Интернет уже до дыр зачитал, а нам нужна поддержка PDF в новом сервисе. Дополнительно к уже существующей поддержке XML.
- Сде-е-елаю...

Ну а почему бы и не сделать. Итак, входные данные или PDF, или XML. Процессим, обрабатываем внешними тулзами, сохраняем результат.

Пишу unit test для PDF, убеждаюсь, что он фэйлится.

Дергаю за выступающие части коллегу, чтобы он адаптировал внешние тулзы под процессинг PDFок.

Создаю интерфейс DocumentProcessor. Создаю два класса PdfDocumentProcessor и XmlDocumentProcessor, первый пока пустой, во второй выношу всю функциональность, связанную с XML. Поправляю unit testы, чтобы они работали с новой структурой.

Создаю DocumentProcessorFactory, принимает имя входного файла как параметр, выдает нужный процессор. Меняю сервис, чтобы он использовал factory и processorы. Поправляю unit testы, пишу unit test для factory.

Проверяю - unit test для PDF успешно фэйлится.

Имплементирую логику для процессинга PDF, дело нелегкое, полдня на него грохнул. Проверяю unit test - теперь все работает.

Добавляю изменения, внесенные коллегой во внешние тулзы.

Конфигурирую и запускаю реальный PDF файл в реальной системе. Работает.

Перед коммитом по привычке проверяю изменения. Сравниваю процессор для PDF с процессором для XML. Сравниваю еще раз. И еще. С ужасом убеждаюсь, что никакой разницы между ними нет. Совершенно никакой. Factory выдает совершенно одинаковые объекты-процессоры, только имена разные.

Чешу репу.

Удаляю ВСЕ изменения последнего дня - двух. Абсолютно все изменения.

Запускаю реальный PDF файл в реальной системе. Все работает.

Принимаю решение вечером напиться...
From: [identity profile] lightbird.livejournal.com
штаны просаживают только очень азартные, но сильно продувшиеся игроки. Программеры их обычно просиживают :р

Profile

redis: (Default)
redis

November 2025

S M T W T F S
      1
2345678
9101112131415
1617 1819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Nov. 20th, 2025 02:34 pm
Powered by Dreamwidth Studios