Правила треда: прикладываем пикчу с красивой девушкой для привлечения внимания и рассказываем о самых страшных вещах, когда-либо виденных в чужом или своём коде.
Итак, полгода назад я подписал контракт на длительное время на работу над одним проектом. Теперь я хочу поделиться с аноном описанием тех решений, которые использовали разработчики, от которых я получил в наследство этот проект.
№1 В проекте изначально неправильная архитектура. Приходится хранить в БД огромное количество объектов. Вместо того, чтобы хранить в таблице диапазоны, разрабы решили переписать все запросы на SQL вместо стандартного Django ORM, потому что так быстрее работает. Добавлям к любой модели новое обязательное поле без значения по умолчанию и вуаля - всюду Exception'ы!
№2 Про нормализацию БД никто не слышал.
№3 На фронте jQuery UI 2012 года выпуска.
№4 Решили перевести проект на более новую версию Django. Не пошли миграции да и половина форм не стала работать. Исправили ошибки? Нет! Они "пропатчили" Django, чтобы её валидаторы не видели ошибок!
class Something { #define PROPERTIES PROP1, PROP2, PROP3 #define CONSTRUCTOR_TYPE default #include "BaseClassMixin.h" // раскрывается в разные вещи в зависимости от дефайнов выше. }
№6
(gdb): Segmentation fault caused by line 13
Смотрим строку 13:
const char *globalVar = "some_string";
№7
Парсер подмножества Java. Размер исходника: 10 МБ. Одним файлом. Течёт.
>>784443 (OP) >На фронте jQuery UI 2012 года выпуска. Ну надо же! Вот это некрофилы! Вот это педерасты!! Как можно было не взять Yobular24, который только вчера вышел!??! Новые тихнологии! Будующее!!! В новый месяц с новыми фрейворками!!! Фронтенд - сила, джаваскрипт - могила!!!!
>>784753 Я как-то привык, что сегфолт происходит где-то внутри функции. Или внутри пустого деструктора. В данном случае сегфолт происходил на объявлении константы.
>>786143 > 2016 > JS-дибилки продолжают срать в код неведомым дерьмом, когда статический анализатор мог бы отловить все на раз-два А именно сюда относятся: "use strict", точки с запятыми, ассемблер (правда его таки додумались выделить и сделать еще более нескучным; теперь надеюсь он точно никогда не взлетит), классоговна, иммутабельная let параша, может еще чего уже не в силах охуевать от ебанутостости js-дибилок.
>>787702 Там не всё можно выкладывать. Я как-то выложил 3 строки из ЭНТЕРПРАЙЗА - через 2 часа имел разговор с директором, которому позвонили и пожаловались партнёры. При этом сам код они не давали, я просто использовал uncmpyle2 чтобы посмотреть, что внутри у того софта, который я обслуживаю как админ и первая линия техподдержки (2 года на горячих звонках просидел, да). А тут можно выкладывать вообще всё, пушо признаться, что сидишь на этом сайте - зашквар ещё тот.
Итак, полгода назад я подписал контракт на длительное время на работу над одним проектом. Теперь я хочу поделиться с аноном описанием тех решений, которые использовали разработчики, от которых я получил в наследство этот проект.
№1
В проекте изначально неправильная архитектура. Приходится хранить в БД огромное количество объектов. Вместо того, чтобы хранить в таблице диапазоны, разрабы решили переписать все запросы на SQL вместо стандартного Django ORM, потому что так быстрее работает. Добавлям к любой модели новое обязательное поле без значения по умолчанию и вуаля - всюду Exception'ы!
№2
Про нормализацию БД никто не слышал.
№3
На фронте jQuery UI 2012 года выпуска.
№4
Решили перевести проект на более новую версию Django. Не пошли миграции да и половина форм не стала работать. Исправили ошибки? Нет! Они "пропатчили" Django, чтобы её валидаторы не видели ошибок!