1. Лучший говнокод

    В номинации:
    За время:
  2. Куча / Говнокод #23535

    +2

    1. 1
    https://shmat-razum.blogspot.com/2012/12/blog-post.html

    Есть такое правило, к которому все привыкли: если в программе записано логическое выражение с and, и первое подвыражение оказалось равно false, то второе не вычисляется. Аналогично с or: если первое подвыражение равно true, второе не вычисляется. Это позволяет удобно записывать вещи вида

    if (index < 0 || array[index] == NULL)
    ...

    или
    if (index >= 0 && array[index] == ptr)
    ...


    Это правило действует во всех широко используемых языках программирования: C/C++, Java, C#, Javascript, Python, а также в многочисленных представителях семейств лиспов и смолтоков. И даже в Хаскеле. И даже в PL/SQL. У правила есть название: закорачивание логических связок (short-circuit evaluation). Казалось, оно само собой разумеется, и есть во всех языках.

    При столкновении с языком Fortran автора ждал сильный удар. Закорачивание в этом языке не просто не действует, а может действовать или не действовать в зависимости от воли компилятора. Эта неопределённость закреплена в стандарте. При этом, в интеловском компиляторе, например, просто нет ключа, чтобы этим управлять. Программист не может быть уверен, что выполнится лишь одна ветвь; в то же время, он не может быть уверен, что выполнятся обе. Поведение может зависеть от номера версии компилятора и настроек оптимизации.

    j123123, 15 Ноября 2017

    Комментарии (29)
  3. Куча / Говнокод #23314

    −4

    1. 1
    https://internals.rust-lang.org/t/help-test-async-await-generators-coroutines/5835

    Ну все, раст слился. Теперь это ненужное говно и у них.

    subaru, 30 Августа 2017

    Комментарии (29)
  4. bash / Говнокод #23205

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #!/bin/bash
    
    declare -i i=100000000
    while ((i<200000000)); do
        echo ${i:1:8}
        ((i++))
    done

    Генератор wps пинов

    ProgRamistYshka, 20 Июля 2017

    Комментарии (29)
  5. PHP / Говнокод #19082

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    function checkRus($str)
    {
    	$result = true;
    	$eng = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
    	for ($i = 0; $i < strlen($str); $i++) {
    		if (in_array($str[$i], $eng)) {
    			$result = false;
    			break;
    		}
    	}
    	return $result;
    }

    Проверка на "русскость" строки

    foreign, 25 Ноября 2015

    Комментарии (29)
  6. PHP / Говнокод #18132

    +143

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <? foreach ($arResult["SIZES"] as $skuId => $size): ?>
    	<? if ($skuId == $arResult["SKU_ID"]): ?>
    	<option value="<?= $skuId ?>" selected="selected" data-product-size="<?= $size ?>"><?= $size ?></option>
    	<? else: ?>
    	<option value="<?= $skuId ?>"
    		data-product-url="<?= $arResult["SKU_LIST"][$skuId]["DETAIL_PAGE_URL"] ?>"
    		data-product-size="<?= $size ?>"
    		<? if ($skuId == $arResult["SKU_ID"]) echo 'selected="selected"' ?>><?= $size ?></option>
    	<? endif ?>
    <? endforeach; ?>

    turbosnail, 08 Мая 2015

    Комментарии (29)
  7. C++ / Говнокод #18014

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    void insertObject(Object object)
    {
    +	auto found = std::find_if(
    +		objects.begin(),
    +		objects.end(),
    +		[&object](Object otherObject)
    +		{
    +			return otherObject == object;
    +		}
    +	);
    +
    +	if (found != objects.end())
    +		return;
    +
    	objects.push_back(object);
    }

    Надо было не вставлять в коллекцию дубликаты по какому-то критерию. Человек написал это.

    atsgovno, 17 Апреля 2015

    Комментарии (29)
  8. Куча / Говнокод #18009

    +144

    1. 1
    2. 2
    3. 3
    ENCRYPT(str[,salt])
    Шифрует аргумент str, используя вызов системной функции кодирования crypt() из Unix. Аргумент salt должен быть строкой из двух символов (в версии MySQL 3.22.16 аргумент salt может содержать более двух символов):
    Если функция crypt() в данной операционной системе недоступна, функция ENCRYPT() всегда возвращает NULL. Функция ENCRYPT() игнорирует все символы в аргументе str, за исключением первых восьми, по крайней мере в некоторых операционных системах - это определяется тем, как реализован системный вызов базовой функции crypt().

    Сегодня при входе в админку сайта ошибся в последнем знаке 10 значного пароля, но успешно зашел. Повторил опыт опять успешно.
    Глянул в код там такая проверка
    AND password= ENCRYPT(concat('".mysqli_escape_string($ this->db_class->link,$pass)."',clients.salt),'SECRET_KE Y')";

    Теперь рву волосы на жопе.
    Говнокод мой.

    Vasiliy, 16 Апреля 2015

    Комментарии (29)
  9. C++ / Говнокод #17961

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Bool_vector::operator«(int) // сдвиг
    {
    int i;
    for (i=0;i<this->n;i++)
    cout»(*this)[i];
    }

    Человек далёк от программирования.
    Пытается написать лабу.
    Не блондинко.
    Я при виде этого не сдержался.

    mittorn, 08 Апреля 2015

    Комментарии (29)
  10. PHP / Говнокод #17936

    +158

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    $apiid = mysql_real_escape_string(substr($_POST['apiid'], 0, 1024));
    $logine = mysql_real_escape_string(substr($_POST['login'], 0, 1024));
    $koef = mysql_real_escape_string(substr($_POST['koefjet'], 0, 1024));
    $balans = mysql_real_escape_string(substr($_POST['balansjet'], 0, 1024));
    $balansz = mysql_real_escape_string(substr($_POST['balanszjet'], 0, 1024));
    $trafbalans = mysql_real_escape_string(substr($_POST['trafbalansjet'], 0, 1024));
    $krbalans = mysql_real_escape_string(substr($_POST['krbalansjet'], 0, 1024));
    $idget = mysql_real_escape_string(substr($_POST['idjet'], 0, 1024));
    $vuz = mysql_real_escape_string(substr($_POST['v'], 0, 1024));
    $percent = mysql_real_escape_string(substr($_POST['percent'], 0, 1024));
    $maxinv = mysql_real_escape_string(substr($_POST['maxinv'], 0, 1024));
    $r = mysql_real_escape_string(substr($_POST['r'], 0, 1024));
    $fio = mysql_real_escape_string(substr($_POST['fio'], 0, 1024));
    $pass = mysql_real_escape_string(substr($_POST['pass'], 0, 1024));
    $obnom = mysql_real_escape_string(substr($_POST['obnom'], 0, 1024));
    $dkot = mysql_real_escape_string(substr($_POST['dkot'], 0, 1024));
    $email = mysql_real_escape_string(substr($_POST['email'], 0, 1024));
    $ppr = mysql_real_escape_string(substr($_POST['ppr'], 0, 1024));
    $procent = mysql_real_escape_string(substr($_POST['procent'], 0, 1024));
    $unikjet = mysql_real_escape_string(substr($_POST['unikjet'], 0, 1024));

    вот так кто-то получал данные формы

    podvzbzdnul, 05 Апреля 2015

    Комментарии (29)
  11. PHP / Говнокод #17610

    +157

    1. 1
    2. 2
    float floor ( float $value )
    Возврашает ближайшее целое число, округляя value в меньшую сторону.

    > float
    > Возврашает ближайшее целое число
    > Возвращаемое значение функции floor() по прежнему типа float потому что диапазон значений float обычно больше, чем у integer.

    когда мне айдешка подсветила, что я в качестве ключа массива подставляю что-то не то, я начал прихуевать

    http://php.net/manual/ru/function.floor.php

    Fike, 10 Февраля 2015

    Комментарии (29)