?

Log in

No account? Create an account

Заметки админа

Суров и справедлив

Previous Entry Share Next Entry
Индусский код
Рыба
hroft_clone3
Меня много спрашивали что такое "индусский код" и почему все ак на него матерятся. Вот, спёр несколько примеров, наслаждайтесь, коллеги :)
Особо мне нравится пример №4 :)

Индусский код

Алсо аутентичный индусский код пишется на хинди и транслитерируется в C, C++ или java.
Настоящий индусский код

Примеры индусского кода

Пример № 1 (C#)
uint i;
...
if (i.ToString().Length == 1)
{
...
}

Не сразу можно понять, что в этом коде просто-напросто выполняется проверка i < 10. Алгоритм достаточно прост: выполняется преобразование i в строку, после чего вычисляется её длина. Если число больше 9, то его десятичная запись содержит больше одного символа. Отрицательные числа переменная типа uint содержать не может. Проверку проходят лишь числа от 0 до 9.

Алгоритм ресурсоёмок, не очевиден и не поддается сопровождению даже теоретически.
[Еще чуток]
Пример № 2 (C#)
double rest(float a, float b)
{float res=a*b;
for (int i=0; i< 999999999; i++)
if (i<=res && i+1>res) {res = res-i; break;}
return res;
}

Далеко не сразу можно понять, что этот код выделяет дробную часть произведения a*b. кроме того, функция выдаст ошибочное значение при a*b>999999999 или a*b<0. Также зависимость времени выполнения от величины целой части тоже не радует.

Пример № 3 (C#)
bool IsNumber (string str)
{
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").
Replace ("8", "").Replace ("9", "").Length == 0);
}

Хотя в данном случае, вообще говоря, алгоритм вполне очевиден, не менее очевидно и то, что для его выполнения конструктор класса string будет вызван не менее десяти раз, со всеми вытекающими из этого последствиями. И всё только потому, что какому-то индусу было лень придумать менее ресурсоёмкую альтернативу.

Пример № 4 (C#)
bool value;

if (value.ToString().Length == 4)
{
...
}
else if (value.ToString().Length == 5)
{
...
}
else
{

// внимание! кто-то хочет нас наебать подсунув некачественный (по всей вероятности, протухший) bool, но мы ему не дадим:
throw new ArgumentException();
// у некоторых племенных индусов бывает и продолжение, на случай если throw вдруг не сработает:
return !true && !false;
// надо же вернуть какую-нибудь хуйню, чтобы заказчик не ныл.
}

В этом примере проверка истинности значения логической переменной производится с помощью длины её текстового представления. Если длина равна четырём („True“), значение истино, если пять („False“) - ложно, если ни то, ни се - тогда включаем panic mode и начинаем жарить карри.

Пример № 5 (PHP)
if ($_POST["end_oplata"]!="sending" and $_POST["continue_oplata"]!="prodoljit" and $_POST["prov"]!="proverka") {
...
}
elseif ($_POST["continue_oplata"]!="prodoljit" and $_POST["prov"]!="proverka") {
...
}
elseif ($_POST["continue_oplata"]=="prodoljit") {
...
}


В этом примере проверяется, какое действие нужно выполнить. Вместо того, чтобы создать одну переменную со значением следующего действия, создается три «быдлокодерских» переменных.

К тому же, это пример ужасного стиля именования переменных, containing as английские слова, так и transliterated russian ones. Видимо, сказался author's poor английский словарный запас.

Пример № 6

TurDuckEn Code — разновидность быдлокода, чаще всего встречающаяся в веб-приложениях. Как спагетти-код, только хуже. ТурДукен (en.w:Turducken) — декадентская расовая пиндосская нямка, cостоящая из индейки (turkey), нафаршированной уткой (duck), зафаршированной курицей (chicken).

Турдукен Код, например, состоит из PHP, фаршированным SQL, нафаршированным HTML, зафаршированным Javascript'ом. Вот так.

Почему именно индусский

В Индии с некоторых времен существует практика оценки производительности труда программиста на основе количества написанного кода. Чем больше кода, тем больше программист работает, и, следовательно, выше его оклад. Шустрые индусы быстро сообразили как обманывать неквалифицированных заказчиков.

©


[И еще примерчик]
Говорят что программистам из Индии деньги платят за количество строчек кода которые они написали(редко обращая внимание на качество).
Вот пример одной из конструкций:
if ($x == 0) {
// Do 1....
}
elseif ($x!=0) {

// Do 2.....
}
else {

//
// А вот здесь чистые деньги :)
//
}


Ну и еще примеров можно посмотреть на лурке

Удачи, вам, коллеги, и поменьше иметь дел с индусским кодом


  • 1
Ничего не поняла, но впечатляет.

Ну

bool value;…
if (value.ToString().Length == 4)
{
...
}
else if (value.ToString().Length == 5)
{
...
}
else{
// внимание! кто-то хочет нас наебать подсунув некачественный (по всей вероятности, протухший) bool, но мы ему не дадим:
throw new ArgumentException();
// у некоторых племенных индусов бывает и продолжение, на случай если throw вдруг не сработает:
return !true && !false;
// надо же вернуть какую-нибудь хуйню, чтобы заказчик не ныл.
}

вместо


bool value;…
if (value){
.......
}
else
{
...
}


и везде в том же стиле

Edited at 2015-11-20 01:30 pm (UTC)

ой, всё ....
покажу сыну,может он поймет. Он же поступил у меня в военмех и как раз на программиста учится.

Тогда поймет :)

Где то наеб@ли, но где не понятно!

Ты как, звонил?

резюм отослал :)


утречком позвоню

(Deleted comment)
Средствами ЖЖ не сделать

(Deleted comment)
Естественно.
Я думал куда бы скрипт вляпать, чтобы он исполнился....пока не придумал :)

(Deleted comment)
А я политеховец :)

Но в ЛЭТИ тоже занимался, еще в школе, ходил на программирование, наас всем классом отправили получать специальность "программист" :)

(Deleted comment)
ну я начинал с калькулятора Б3-21 в 4 классе :)
Потом и Минск был, и Мера, и СМ-4, и ЕС разных моделей.

И фортран, и паскаль, и алгол .... да мало-ли на чем приходилось работать :)

PS. я сам 70-го года :)

Edited at 2015-11-27 08:32 am (UTC)

> Отрицательные числа переменная типа uint содержать не может

а если бы и мог - это ничего бы не изменило, у них минимальная длина два

....это ничего. Я в одном сборнике советов видел как сравнивать два float числа...
"ну ты понел" (С)

Как всегда, через жопу

  • 1