Написал подробную статью об одном интересном опыте на одном из проектов. Мне нужно было разобрать логику большого эксель файла — там несколько сотен довольно сложных формул, и работал он так: менеджер вводил с десяток параметров на одной вкладке, и все остальные были готовы для печати сметы для клиента. Там довольно сложная специфика и сложные товары, с массой особенностей типа с таким-то товаров должен идти такой-то сервис, а вот тут нужно умножать на два если там четыре. Никто у клиента до конца это не понимал, оно просто работало больше десяти лет, и все эти десять лет люди по чуть-чуть подправляли там логику, в пределах своего понимания. Документации не было, но даже если бы была, она бы только мешала, потому что сделанное потом по документации наверняка бы не билось с тем, что выдает Excel, и избежать реинженеринга все равно не удалось бы.
Я тогда поломал голову, как сделать этот реинжиниринг возможным в конечное время, исчисляемое единицами недель, и придумал решение, основанное на функциональном программировании на Groovy.
Публикую подробный разбор решения и репозиторий с кодом. Код пришлось написать с нуля для статьи, как и придумать эксель для демонстрации (в сотни раз проще того).
https://hybrismart.com/2024/04/06/how-i-reverse-engineered-huge-excel-file-full-of-complex-formulas/
https://hybrismart.com/2024/04/06/how-i-reverse-engineered-huge-excel-file-full-of-complex-formulas/
