Говнокод
Сегодня начальство торжественно объявило, что передает мне какой-то проект. И передало. Эта софтина симулирует реле. Ну тут ты релюшку нажал, а там все щелкнуло и так далее. Короче неважно. Сначала я думал, что это непросто - ну мужик реально врукопашную реализовал нечто, похожее на алгоритм Дейкстры, только там вместо поиска кратчайшего пути просто пересчитываются все значения напряжение-ток в узлах. А может Дейкстра тут вовсе и ни при чем (и скорее всего таки ни при чем), но там точно фигурировало древообразная структура вроде графа из связных списков и все это дело постоянно пересчитывается. Короче как-то так. Да и суть не в графе и не в Дейкстре, а в том, как это все написано. Ну, с одной стороны, там вроде бы есть классы и как-то используется наследование. То есть в этом смысле это похоже на настоящее ООП-программирование. А дальше начинается пиздец. Во-первых, от такого количества операторов goto я просто охуел. Я не из тех, кто будет требовать сделать сеппуку тому, кто использует этот дьявольский оператор. Конце в концов, это можно пережить, даже если оно встречается в коде несколько раз. Но ведь там инструкции такого рода:
//.....
if(itemsCount < MaxSize)
go to SomeLabel;
ShowMessage("Too many elements");
Application->exit();
SomeLabel;
//.....................
То есть просто if-then-else использовать - это явно не наш путь. И такого говна там навалом. Далее, все списки объектов хранятся в руками созданном связном списке. То есть нет вообще никакого понятия о том, что такое STL, или еще какой набор классов и функций. Для хранения строковых значений используются старые добрые сишные строки с нулем в конце. Ну и, конечно же, функции по 500-600 строк, куда ж без них. Cвязь между различными частями программы осуществляется через несколько десятков глобальных переменных. Ну и, конечно, ни о какой многопоточности не может быть и речи - хотя в данном случае это хорошо, ибо страшно представить, что было бы тогда. Короче говоря, это самый настоящий говнокод, который пишут студенты первого курса, которым в лом читать документацию и очень нравится изобретать велосипеды. И это срань была передана мне со словами "ну я чисто физически уже не успеваю дописать, поэтому давай ты, и заодно разберись там что к чему и нарисуй иерархию классов". На самом деле он сам в этом адовом пиздеце уже разобраться не может и нашел лоха, на которого это можно спихнуть попроще. Вот такие вот дела. Чувствую, что дело дрянь.
//.....
if(itemsCount < MaxSize)
go to SomeLabel;
ShowMessage("Too many elements");
Application->exit();
SomeLabel;
//.....................
То есть просто if-then-else использовать - это явно не наш путь. И такого говна там навалом. Далее, все списки объектов хранятся в руками созданном связном списке. То есть нет вообще никакого понятия о том, что такое STL, или еще какой набор классов и функций. Для хранения строковых значений используются старые добрые сишные строки с нулем в конце. Ну и, конечно же, функции по 500-600 строк, куда ж без них. Cвязь между различными частями программы осуществляется через несколько десятков глобальных переменных. Ну и, конечно, ни о какой многопоточности не может быть и речи - хотя в данном случае это хорошо, ибо страшно представить, что было бы тогда. Короче говоря, это самый настоящий говнокод, который пишут студенты первого курса, которым в лом читать документацию и очень нравится изобретать велосипеды. И это срань была передана мне со словами "ну я чисто физически уже не успеваю дописать, поэтому давай ты, и заодно разберись там что к чему и нарисуй иерархию классов". На самом деле он сам в этом адовом пиздеце уже разобраться не может и нашел лоха, на которого это можно спихнуть попроще. Вот такие вот дела. Чувствую, что дело дрянь.
Комментарии