Какой самый запутанный код вам пришлось исправить? - PullRequest
2 голосов
/ 19 апреля 2009

Большинство программистов имели опыт отладки / исправления чужого кода. Иногда этот «чужой код» настолько запутан, что достаточно плохо пытается понять, что он делает.

Какой самый худший (самый запутанный) код вам приходилось отлаживать / исправлять?

Если вы не выбросили его и не перекодировали с нуля, то почему бы и нет?

Ответы [ 12 ]

0 голосов
/ 19 апреля 2009

Оператор Perl:

select((select(s),$|=1)[0])

, который по предложению первоначального автора (сам Рэндал Шварц, который сказал, что он не любил его, но в то время ничего другого не было доступно) был заменен чем-то более понятным:

IO::Handle->autoflush

Помимо этой строки, некоторые библиотеки Java JDBC от IBM запутаны, и все переменные и функции представляют собой либо комбинации букв 'l' и '1', либо одинарные / двойные символы - очень сложно отследить что-либо до вы их все переименовали. Нужно было сделать это, чтобы отследить, почему они отлично работали в JRE IBM, а не в Sun.

0 голосов
/ 19 апреля 2009

У меня был случай с функцией 300 линий, выполняющей санацию ввода, которая пропустила определенный угловой случай. Он анализировал определенные ситуации вручную, используя IndexOf и Substring, а также множество встроенных переменных и констант (похоже, что оригинальный кодер ничего не знал о передовой практике), и никаких комментариев не было. Выбросить его было невозможно из-за нехватки времени и того факта, что у меня не было требуемой спецификации, поэтому переписывание означало бы понимание оригинала, но после понимания исправления это было быстрее. Я также добавил много комментариев, чтобы тот, кто придет за мной, не чувствовал той же боли, глядя на нее ...

...