vit_r: default (Default)
[personal profile] vit_r
За двадцать лет я видел много плохого кода. Видел и наивный студенческий, и хамский профессорский, и загадочный индийский, и просто глупый, и ужасный.

Но сегодня я значительно расширил свои горизонты.

Реальность оказалась куда круче всех анекдотов. Проверка на равенство нулю перед присвоением нуля целой переменной - это самое безобидное и извинительное. Конструкции типа WTF! были щедро замешаны на ошибки типа OMG! Собственно, там кроме них ничего и не было. Разве что пара строчек, скопированных из какого-то учебника, да блок комментариев, который я удалил не читая.

На расшифровку и попытку понять, что программа должна была бы делать, если бы в ней не было столько бреда, ушло часов шесть чистого времени. И это на какой-то жалкий скрипт, в котором и с комментариями пол тысячи строк не наберётся.

Ошибки программа тоже производила загадочные и неожиданные. Подозреваю, время, за которое мне про них рассказывали, вполне бы хватило, чтобы написать всё с нуля. (Правильно, конечно, написать, да ещё и протестировать.) И это им ещё повезло, что формат исходных файлов настолько прост, что программе не удалось раскрыть и десятой части заложенного потенциала.

Хорошо, что автор в другом городе и другой стране. А так бы мог сказать случайно, что я по поводу этого думаю.

Date: 2012-03-15 12:32 am (UTC)
From: [identity profile] white-bars.livejournal.com
Я видел код программы бухучета, написанный человеком не знающим о существовании передаваемых параметров. Программист написал процедуру для января, потом скопировал ее для остальных одиннадцати, прибавляя к результату единицу (не помню деталей, но, условно говоря, возвращаемый результат для марта был на единицу больше, чем результат для февраля). Раз в какое-то время программа начинала глючить, а потом переставала. Причиной было то, что индийский программист в процедуре для декабря забыл прибавить нужное значение (скопировал из ноября, а поменять забыл).

Date: 2012-03-15 12:51 am (UTC)
From: [identity profile] vit-r.livejournal.com
Фигня-с.

Тут подобная ерунда была реализована в if - if - if ... if -if -конструкции. А на способ разбора передаваемых параметров я пялился минут десять. Человек знал, что в @_ что-то прячется, но выковыривал значения оттуда особо извращённым методом. Плюс функции значения не возвращали, а меняли глобальные переменные. Естественно, название переменных содержанию и смыслу не соответствовало.

Насчёт же ошибок, их мог произвести практически любой кусок когда, кроме тех, где стояли блоки присвоения значения переменным, которые нигде в коде не используются.
Edited Date: 2012-03-15 12:52 am (UTC)

Date: 2012-03-15 06:51 am (UTC)
From: [identity profile] b00ter.livejournal.com
Вот ради таких умельцев и придумали иммутабельность. Хотя, боюсь, тоже не поможет.

Date: 2012-03-15 07:07 am (UTC)
From: [identity profile] vit-r.livejournal.com
Вчера я убедился, что защита от дурака способна остановить только умного.

Profile

vit_r: default (Default)
vit_r

January 2026

S M T W T F S
    12 3
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 7th, 2026 04:56 am
Powered by Dreamwidth Studios