pozitronik: (Yarr)
[personal profile] pozitronik
Работал у нас один Руслан. Работал - и уволился вскоре после моего прихода.
А мы, оставшиеся, очень сильно плевались, переписывая за ним его ужасный код. Код был настолько плох, что каждую строчку можно было бы показывать в фильме ужасов: Руслан тварил в каком-то своём стиле, игнорируя любые условности, правила и стандарты. Он забивал на форматирование и отступы скобок, он мешал табуляции и пробелы, заливая ими также и концы строк. Часть файлов он сохранял в win1251, а часть в utf8, а для приведения выводимых кодировок к единому виду писал конструкции с iconv. Он очень любил использовать Codeigniter, но напрочь игнорировал MVC, вписывая html-код форм прямо в контроллер, инлайном или построчно, через echo. А в этот html он инлайном же вписывал и css с js. Он никогда не выносил дублирующийся код в функции, копипастя одинаковые фекальки кода повсюду. При этом он мог написать функцию вроде этой:

private function null2unknown($data) {
if ($data == "") {
return "No Value Returned";
} else {
return $data;
}
}

которая вызывалась всего один раз. Он, в зависимости от настроения, мог использовать стандартные возможности фреймворка - а мог написать многостраничный велосипед. Он называл поля в своих таблицах "select", "order" и "group" - и да, запрос у него мог выполняться даже во вьюхе. Он вписывал логины, пароли и абсолютные пути прямо в скрипт, вынося в конфиг только свой почтовый адрес (хотя и его он тоже вписывал потом напрямую). Он никогда не выбрасывал старый и отладочный код, заботливо сохраняя его в комментариях. Он глушил warning messages собакой.

Он писал чудовищно плохо, глупо и страшно. Я уверен, что Руслан совершал любой программистский грех, который вы сможете вспомнить или придумать. Но я могу только надеяться, что у Руслана случилась гангрена ануса и рак простаты - это самое малое, что я могу пожелать ему.

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

А сегодня всплыл один из тех сервисов, что когда-то был Русланом написан, худо-бедно запущен, и с тех пор - неприкасаем. Потребовалось немножко поменять логику. Я открыл код, ещё не зная, кем он был написан - и буквально ощутил, как от этих строк несёт говном. С трудом сдерживая рвотные позывы я рефакторил стили, чтобы хотя бы после выравнивания можно было попытаться осознать логику - и, поверьте, тот эпизод с соками говн был мне в тысячу раз менее противен.
Но вот часть работы была сделана, и я решился взглянуть на логическую часть. Минут пять я смотрел на странную конструкцию, не в силах осознать весь разврат разума, её создавшего (ЖЖ жрёт отступы, но в оригинале оно всё равно так и выглядело):


$sup_time = date("Hi",time());

switch($lang){
case 'ru':
$this->setTitle(iconv('windows-1251','utf-8','Информация о заявителе'));
if ($sup_time=="2356" || $sup_time=="2357" || $sup_time=="2358" || $sup_time=="2359" || $sup_time=="0000" || $sup_time=="0001"){
$this->load_view('support',$output);
} else {
$this->load_view('home',$output);
}
break;
case 'eng':
$this->setTitle('Payment information');
if ($sup_time=="2356" || $sup_time=="2357" || $sup_time=="2358" || $sup_time=="2359" || $sup_time=="0000" || $sup_time=="0001"){
$this->load_view('support',$output);
} else {
$this->load_view('home',$output);
}
break;
}



В этом коде ужасно всё, но самый перепиздец - это выбор view в зависимости от времени. Он берёт значение часов/минут в виде строки, и проверяет каждый из вариантов этой строки. Это чудовищное, невыносимое и смешное решение.


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

Date: 2015-03-19 04:04 pm (UTC)
From: [identity profile] sreversor.livejournal.com
Он называл поля в своих таблицах "select", "order" и "group" - и да, запрос у него мог выполняться даже во вьюхе.


Date: 2015-03-19 07:08 pm (UTC)
From: [identity profile] cooler.livejournal.com
Боюсь представить, на что был бы похож код, если бы речь шла не о 6 минутах.
"гангрена ануса и рак простаты" - добрее надо быть ;)

Date: 2015-04-17 11:53 am (UTC)
From: [identity profile] the-svin.livejournal.com
Так code используйте. Тогде все табы и спейсы останутся.

Date: 2015-04-17 12:22 pm (UTC)
From: [identity profile] pozitronik.livejournal.com
В теле поста code есть, жежешный парсер вырезает тег, видимо.

Date: 2015-04-17 12:37 pm (UTC)
From: [identity profile] the-svin.livejournal.com
Щас попробуем на пару спейсов сдвинуть


$sup_time = date("Hi",time());


Тест
и правда фейл)
У меня сдвинул в журнале
Edited Date: 2015-04-17 12:38 pm (UTC)

Date: 2015-04-17 12:54 pm (UTC)
From: [identity profile] pozitronik.livejournal.com
Может от темы оформления ещё зависит.

Date: 2015-04-17 02:20 pm (UTC)
From: [identity profile] the-svin.livejournal.com
Тогда у комментариев тоже есть тема оформления?

Date: 2015-04-17 02:26 pm (UTC)
From: [identity profile] pozitronik.livejournal.com
Скорее всего, применяется та же тема, что к журналу.
А так - хз.

Date: 2015-04-17 02:44 pm (UTC)
From: [identity profile] the-svin.livejournal.com
Вот я посте Белки и Волки первую строчку через code написал.
С отступом спейсами. Ну видели, наверно, уже.

Date: 2015-04-17 03:27 pm (UTC)
From: [identity profile] pozitronik.livejournal.com
Понятия не имею, кто эти животные.

Date: 2015-04-17 03:45 pm (UTC)
From: [identity profile] the-svin.livejournal.com
Здесь (http://the-svin.livejournal.com/760292.html) первая строчка с использование code. и пробел впереди не убирается.

December 2016

S M T W T F S
    123
45678910
1112131415 1617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 1st, 2025 11:04 am
Powered by Dreamwidth Studios