Богатырёв Андрей Сергеич : другие произведения.

Программистская жизнь

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:
Школа кожевенного мастерства: сумки, ремни своими руками
 Ваша оценка:
  • Аннотация:
    По мотивам реальных событий. Будет понятно только тем, кто разумеет в языке программирования Си, язык здесь - главный герой.

Картинка из жизни наёмного программиста в филиале крупной компании.

- Вы в прошлом пэтче внесли в программу ужасную ошибку! Пользователи
стонут. 13 крупных корпораций обещали никогда не иметь с нами дела,
пятеро подали в суд, один прислал киллера. Нас может спасти только
срочная правка. Всё надо сдать на тестирование нынче вечером.

- А где ошибка-то?

- А вот она:

    int A[5];

    for(x=0; x <= 5; x++)
        A[x] = f(x);

происходит выход за границу массива на 5-ом шаге и всё рушится в core.

- Ага!!! Тут надо...

- Править это поручили мне. К вечеру я выдам код, ты из него скомпилируешь бинарник
и пошлёшь для тестирования на Базу. И чтоб скомпилировал вприпрыжку!!!

Я думал, что правка будет проста и изящна. Нужно-то всего:

    for(x=0; x < 5; x++)
        A[x] = f(x);

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

Поступивший к вечеру код выглядел так:

int A[5];

int FIXEDCODE(unsigned int x){
        int a = x & 0xFFFF;
        int b = (x >> 16) << 16;
        int c[666], i, ii, iii;
        int w = rand() % 666;

        for(i=0; i < 666; i++)
                c[i] -= c[i];
        c[w] = (a | (b^a^a));
        for(ii= -7777; ii <= 7777; i=i+22/11/2, iii <<= 1)
                if(ii==0){
                        return c[w];
                        goto a1;
                }
a1:
        return(((c[0]) + c[13]));
}

int f(int x){
        return (((x+1)));
}
main(){
        int x, y;
        A[0+0*0-(132<<8) * 0 & 72] = f(12-12);
        for(x=1, y=5; x <= 5 && y + 1 >= 0; x += 1, y -=2){
                A[FIXEDCODE(x)] = x^y ? f(x) : f(x);
        }
        ...

- Ой, - сказал я. - А можно я приведу это к человеческому виду? Чтобы код был короче и
читабельнее.

- Не надо. Столько уважаемых авторитетных программистов потратили своё время на просмотр
этого кода. И все признали его корректным. Негоже менять код, они должны будут снова
перепросмотреть его, у них есть лишнее время? Я думаю, что программисты должны заниматься
настоящими ошибками, а не тратить время на косметические и стилистические правки.
Ты подумай - сколько мы затратили человеко-часов на этот код, и здесь и на Базе.
Что ж мы работали - коту под хвост? И ты, что ты прицепился к этому коду - тебе что,
нечего делать?

- Но этот код с очевидностью можно сделать лучше...

- У нас в программах есть масса мест, где код можно хоть как-то сделать лучше.
Что ж нам - бросить всё и заняться вычисткой кода? Ради собственного удовольствия?
Нас ждут заказчики и большие деньги за проплаченные ими контракты.
Ну скажи, ЗАЧЕМ менять этот код? Он и так работает. Ну, сделаешь ты его чуть-чуть проще
и изящней - много от этого будет толку? Мы должны придерживаться принципа "минимум изменений".
К тому же, этот код уже оттестировали на всех машинах Базы, а если ты внесёшь изменения - его
надо будет тестировать заново. Сколько новых хлопот людям! Отнятые от игры в тетрис машины.
А разницы - никакой. Работает? Да. И зачем его тогда менять???

- Ну... но вот хоть это-то место - A[0+0*0-(132<<8) * 0 & 72] = f(12-12);
Тут выражение в [] скобках сразу же сворачивается в нуль. Зачем нам тратить байты памяти
и иметь плохо читаемый код?

- Ну, памяти-то в наших замечательнейших машинах - хоть отбавляй! А код этот поместил сюда
сам Япона-сан, который затратил столько сил на поиски вашей ошибки. Что же, мы будем
обижать человека? Нет, теперь это стало политическим вопросом - людей обижать нельзя.
Какое значение имеет качество кода по сравнению с радостью сотрудников и осознания ими
выполненного перед фирмой долга? Нет, нет, я не вижу никаких причин менять этот код!
Он никому не мешает, всё работает отлично. Нет, нет, это - ОДОБРЕННЫЙ код.
Давай, подбери его как есть. Ну, может, в следующем тысячелетии поправим, так и быть.

- В сле...

- И учти ещё. Мы тут собрались делать нашу работу и делать её быстро и с удовольствием.
Мне работу поручили - я сделал, быстро и с удовольствием. И не порть мне удовольствия!
Тем более, что мне за срочную хорошую работу выдадут для удовольствия денежное поощрение
с занесением в личное дело и предложат отличную должность на Базе... Ямэ!!!

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"