У меня было несколько вещей, которыми я горжусь, и некоторые из них были написаны мной несколько лет назад. Это не обязательно должно быть глючно, просто плохой код.
code-quality
bug
code-smell
Джеймс
источник
источник
Ответы:
Я не знаю, горжусь ли исправлением, потому что оно было настолько очевидным, но самый ужасный код, который я помню, это исправление.
Очевидно, предыдущий разработчик просто продолжал добавлять новые строки каждый раз, когда новый (обычно ирландский) пользователь начинал получать ошибки в приложении.
Я оставлю это в качестве упражнения для класса, как это было исправлено.
источник
UserName='John O''Reily'
что станетUserName='John OReily'
(например, как C объединяет смежные строковые литералы), но не думал о пропавшем'
:(Я не должен этим гордиться, но по какой-то причине это доставляло удовольствие.
Кроме того, что у меня был COBOL в школе, у меня не было опыта, но я был слабым человеком на тотемном столбе, и нам нужно было предоставить исходный код стороннему поставщику для проверки на 2000 год. У нас был один файл COBOL с несколькими подпрограммами, которые вызывали друг друга в файле, как спагетти, и он был слишком велик для загрузки в нашу текущую IDE для компиляции. Его нужно было разделить по крайней мере на два физических файла, и эти файлы, конечно, должны были иметь все необходимое в своем собственном файле. (Или, возможно, был способ связать их вместе, но я действительно не знал КОБОЛ.)
Во всяком случае, я взял этот файл из примерно 100 000 строк и аккуратно разобрал десятки и десятки подпрограмм, чтобы найти два набора подпрограмм, которые не зависят друг от друга и, следовательно, могут существовать в двух отдельных файлах, каждый из которых содержит около 50 000 строк. (Я думаю, что максимум, который мог обработать компилятор, составлял около 80 000 строк, поэтому он должен быть достаточно равномерно согласован.)
Я читал древний язык, которого я не знал, и все еще успешно справлялся с заданием.
источник
Я вынул курсор из триггера и сократил время вставки 40000 новых записей с часа до менее минуты. В конечном итоге это привело к тому, что я смог вставить 21 миллион записей за меньшее, чем ледниковое время, но мы никогда не пробовали импортировать 20 миллионов записей до исправления, поэтому у меня нет статистики того, сколько времени мы сэкономили.
источник
Существовал базовый класс для создания диалогов подтверждения для различных операций на узлах дерева. Вам потребуется только предоставить сообщение, которое будет отображаться в диалоговом окне, и действие, которое нужно выполнить, если оно было подтверждено. Хорошая система, но она не позволяла никакой специальной обработки в случае, если не был выбран ни один узел дерева. В результате текст в одном из диалогов сказал: «Пожалуйста, выберите нет». Если вы выбрали да, это бросило исключение. Очень хороший пользовательский опыт, действительно.
Я исправил это, отключив недопустимые операции.
источник
Худшее, что я видел, это какой-то Java-код для извлечения ключевых предложений из текстового корпуса.
Честно говоря, это ничто по сравнению с некоторыми из наших вещей, но качество и до, и после остается огромным. Рассмотрим следующий фактический код до и после одной функции:
До (попробуйте выяснить, что он делает, прежде чем смотреть на После!):
После:
источник
Моей первой работой по программированию было написание инсталляторов в InstallShield. Я унаследовал сценарий, который был тысяч строк без функций , только gotos. Это было ошеломляюще. Я переписал его, сделал все это красивым, модульным и управляемым данными, чтобы мне можно было получить исполняемые файлы / art / etc. и вытащить новый установщик менее чем за час, а не за неделю + это занял предыдущий парень. Я был очень горд собой.
источник
Я думаю, что ничто даже близко не подходит к этому :
Исправление? Эх, это не должно требовать особых объяснений.
источник