В 1982 году мне было поручено исправить неисправную программу потоковой диаграммы. Программа, написанная на машинно-зависимом Harris FORTRAN (сейчас я не помню, была ли она на FORTRAN IV или FORTRAN 77), состояла из основной программы на 1100 строк, подпрограммы на 900 строк и около дюжины подпрограмм, каждая из которых была От 10 до 20 строк.
О, и в программе почти не было пробелов (пустых строк), и комментарии были бесполезны.
Мне потребовалось 160 часов - четыре недели ПОЛНОЕ ВРЕМЯ, когда НИЧЕГО не было на моем столе - чтобы получить этот код в достаточной степени, чтобы произвести надлежащий ремонт.
Вы находитесь в похожей ситуации. С вашей стороны вам потребуются реальные затраты процессорного времени, чтобы вы смогли поймать это существо с 1000 линиями, достаточно хорошо, чтобы понять, что все может пойти не так, и что нужно сделать, чтобы это исправить.
Найти данные достаточно просто. Для Microsoft AbysmalC ++: ищите каждый экземпляр «return» и начинайте его с
»printf (« \ n \ n --- >>> пробивая в строке% d \ n \ n », __LINE__) ; "
(или эквивалент в вашей системе). Очевидно, вы не можете просто сделать это автоматически; вам придется посмотреть на местный брекетинг. Затем запустите свой тест и посмотрите, где он говорит вам искать.
В том-то и дело, что в реальном мире вычислений практически нет реальных подпрограмм, длина которых в действительности должна составлять 1000 строк. За почти 40 лет в этой ракетке, будучи студентом и профессионалом, я столкнулся с ровно одной рутиной, которая ДОЛЖНА быть длиннее, чем одна страница принтера (около 60 строк), и это была особая ситуация. Всего было около трех страниц.
С другой стороны, я видел много запущенных модулей, где тот, кто написал его, был слишком ленивым или слишком некомпетентным, чтобы правильно его учитывать, а программисты по обслуживанию были слишком ленивы, слишком некомпетентны, или слишком напуган своим менеджером, чтобы вернуться и реорганизовать его.
Наконец: учтите, что, вероятно, это будет не последний раз, когда кто-то должен работать над этим модулем, и, возможно, это будет не последний раз, когда вам придется работать над ним. Подобные вещи обычно бывают смоляными: когда вы прикасаетесь к ним, вы никогда не отклеиваетесь от них. Вполне возможно, что стоит потратить ваше время на рефакторинг, по крайней мере, и, вполне возможно, перепроектировать / переписать его из SCRATCH и первых принципов.