В процессе портирования некой программы с Visual Basic, нашел гениальную альтернативу оператору !
Select Case bln_Сменить_направление_вращения Case True bln_Сменить_направление_вращения = False Case False bln_Сменить_направление_вращения = True End Select
Занимался я пару лет назад поддержкой одной CMS, написанной на PHP в течении лет 4-5 несколькими сменявшими один другого программистами.
CMS платная, исходники сначала никому не давали. А потом в один прекрасный момент гендиректор почему-то стал относиться к раздаче исходников совершенно спокойно. "С энкодером проблемы? Высылай как есть, ничего страшного". На мой вопрос о том, что случилось, ответом было имя одного файла и предложение заглянуть.
Посмотрел. Файл по сути является ядром CMS - принимает данные от пользователя из админской части, хитро распихивает их по куче XML-файлов и просто текстовых файлов, что-то кладет в реляционную базу, предварительно проверив права доступа и так далее. Взгляд останавливается на 4х строках:
// TODO: фигня какая-то написана $respondent = $respondent; global $preLoadExternals; $preLoadExternals = .....;
Комментарий имеет логический смысл. Первая строка - чтоб точно запомнил, да. Вторая - оно и так исполнялось только в global scope. Третья - строка длиной в пару килобайт с несколькими закрывающимися скобками в конце, после чего $preLoadExternals далее в скрипте нигде не используется.
И такой фигни на три тысячи строк
Да, действительно. Стоит ли бояться, что исходники попадут в чужие руки, если сами разобраться не можем.
/** The Constant NUMBER_3. */ public static final int NUMBER_3 = 3; /** The Constant NUMBER_4. */ public static final int NUMBER_4 = 4; /** The Constant NUMBER_5. */ public static final int NUMBER_5 = 5; /** The Constant NUMBER_6. */ public static final int NUMBER_6 = 6; /** The Constant NUMBER_6. */ public static final int NUMBER_7 = 7;
Индийский код, индийский код. Иногда бывает так заработаешься, что любому индусу фору дашь. Безо всякого злого умысла.
Модуль. Переписанный уже, наверное, раз двадцать, причем разными людьми. Заказчик выставляет новые требования. Лезу внутрь, переписывать куски в двадцать первый раз. После чего долго медитирую на фрагмент:
... a=a; b=b; ...
Видимо это было напоминание программе, чтобы точно не забыла...
Из метода передавался в объект ( который работает в ДРУГОМ потоке ) адрес локальной переменной. Представляешь, что случается, когда метод завершает работу?
Правильно, локальная переменная уничтожается. Адрес становится инвалидным. А так как объект, в который передается этот адрес - работает в другом потоке, то это вполне реальная проблема. Я на это долго медитирую... И иду спрашивать, как это работает? Ведь ясно же, что это ошибка.
На что мне автор говорит: ставлю у потока более высокий приоритет и благодаря этому объект УСПЕВАЕТ вычитать содержимое переменной.
А ты говоришь - "Архитектура"... "Планирование"... Индусам до нас далеко. Чисто по-русски. Успеть хапнуть, пока не пришел писец...