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

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
.. и тут я натыкаюсь на этот обалденный метод!
PHP:
/*
    @ Метод определения пустое значение или нет
    @ TYPE: 0 - число, 1 - текст
    */
    public function emptyVal( $val, $type ) {
        $r = true;
        if( !isset($val) ) {
            $r = false;
        }elseif( $type == 0 ) {
            if( $val == 0 ) {
                $r = false;
            }
        }elseif( $type == 1 ) {
            $val = str_replace( ' ', '', str_replace( '    ', '', $val ) );           
            if( $val == '' ) {
                $r = false;
            }
        }
        return $r;
    }
 

Bayer

Специалист
⚖️
🏆
📜
Сообщения
835
Реакции
274
.. и тут я натыкаюсь на этот обалденный метод!
PHP:
/*
    @ Метод определения пустое значение или нет
    @ TYPE: 0 - число, 1 - текст
    */
    public function emptyVal( $val, $type ) {
        $r = true;
        if( !isset($val) ) {
            $r = false;
        }elseif( $type == 0 ) {
            if( $val == 0 ) {
                $r = false;
            }
        }elseif( $type == 1 ) {
            $val = str_replace( ' ', '', str_replace( '    ', '', $val ) );         
            if( $val == '' ) {
                $r = false;
            }
        }
        return $r;
    }
*empty просто существует*
Чел решивший написать это:
ты недостоин моего кода!
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
PHP:
elseif ($usr['no_ip'] == 'trupojor' && $usr['level'] == 10 && ($u->info['level'] < 10 || $u->info['level'] > 11) && $u->info['level'] != 7 && $u->info['level'] != 8 && $u->info['level'] != 9 && $u->info['level'] != 11 && $u->info['level'] != 12) {
        ...
    if ($usr['level'] == 10) {
        ...
    }
}

Горбатый! Горбатый, я сказал!!!!
 

Bayer

Специалист
⚖️
🏆
📜
Сообщения
835
Реакции
274
PHP:
$sp = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "' . ((int)$tims[0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0"');
while ($pl = mysql_fetch_array($sp)) {
   $num_rows++;
}
if ($num_rows < (int)$tims[1]) {
$trn = 0;
}
SELECT COUNT покинул чат
 

DarksLight2

Знаток
⚖️
📜
Сообщения
453
Реакции
121
PHP:
$sp = mysql_query('SELECT * FROM `items_users` WHERE `item_id` = "' . ((int)$tims[0]) . '" AND `uid` = "' . $this->info['id'] . '" AND (`delete` = "0" OR `delete` = "1000") AND `inShop` = "0" AND `inOdet` = "0"');
while ($pl = mysql_fetch_array($sp)) {
   $num_rows++;
}
if ($num_rows < (int)$tims[1]) {
$trn = 0;
}
SELECT COUNT покинул
Переменные прикольные, sp pl trn🙂 и хер пойми что там творится)
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
А помните массовый мор с LIMIT 1 в запросах, потому что оптимизация? Штамповали чуть ли не автозаменой не задумываясь, поэтому везде и постоянно всякое 'select * from ... where id = $id' . 'LIMIT 1'.
 

Bayer

Специалист
⚖️
🏆
📜
Сообщения
835
Реакции
274
Переменные прикольные, sp pl trn🙂 и хер пойми что там творится)
Да переменные то ладно, я орнул с того как чел знает что такое циклы, но не знает что это делается 1 запросом к базе.
Я как представил что нужно например 50к записей так посчитать аж плохо стало.
 

DarksLight2

Знаток
⚖️
📜
Сообщения
453
Реакции
121
JavaScript:
if (top.frames['main'] != undefined) {
    if (top.frames['main'].battle != undefined) {
        if (top.frames['main'].battle > 0) return cb_status(2);
        return cb_status(1);
    }
    return cb_status(1);
}
🤡
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Можно пояснительную бригаду?
 

DarksLight2

Знаток
⚖️
📜
Сообщения
453
Реакции
121
PHP:
if($param != null) {
if($param->battle != null){
if($param->battle > 0) return cb_status(2)
return cb_status(1)
}
return cb_status(1)
}
+- так на пхп
Пс: писал с телефона
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Есть гипотеза, что человек перебирал все варианты, чтобы программа ТОЧНО не отдала неожиданный результат.
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Когда всё задолбало:
PHP:
private function fuckingMagicBalance($level)
    {
        $basicMinDmg = mt_rand($level * 5 - 5, $level * 5 + 5);
        $basicDmg = mt_rand($basicMinDmg, $basicMinDmg * 3);
        return 30 >= mt_rand(0, 100) ? $basicDmg * 2 : $basicDmg;
    }
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Применимо к тому, где используется вот этот ужас:
1658676088831.png

Родные функции.. работают..
PHP:
public function lookStats($m)
    {
        $ist = [];
        $di = explode('|', $m);
        $i = 0;
        $de = false;
        while ($i < count($di)) {
            $de = explode('=', $di[$i]);
            if (isset($de[0], $de[1])) {
                if (!isset($ist[$de[0]])) {
                    $ist[$de[0]] = 0;
                }
                $ist[$de[0]] = $de[1];
            }
            $i++;
        }
        return $ist;
    }

public function impStats($m)
    {
        $i = 0;
        if (array_keys($m)) {
            $k = array_keys($m);
        } else {
            $k = 0;
        }
        $d = '';
        while ($i <= count($k)) {
            if ($k[$i] != '') {
                $d .= $k[$i] . '=' . $m[$k[$i]] . '|';
            }
            $i++;
        }
        $d = rtrim($d, '|');
        return $d;
    }

Пока не смотришь туда, тебе ок..

PHP:
public function lookStats($m)
    {
        return json_decode(str_replace(['=', '|'], ['":', ',"'], '{"' . $m . '}'), true);
    }

public function impStats($m)
    {
        return str_replace(['":', ',"', '{"', '}'], ['=', '|'], json_encode($m));
    }
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
PHP:
public function addNewStat($stat)
    {
        if (isset($stat[1])) {
            mysql_query('INSERT INTO `battle_stat`
                ( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES (
                    "' . $this->info['id'] . '",
                    "' . $stat[1]['uid1'] . '",
                    "' . $stat[1]['uid2'] . '",
                    "' . $stat[1]['time'] . '",
                    "' . $stat[1]['type'] . '",
                    "' . $stat[1]['a'] . '",
                    "' . $stat[1]['b'] . '",
                    "' . $stat[1]['ma'] . '",
                    "' . $stat[1]['mb'] . '",
                    "' . $stat[1]['type_a'] . '",
                    "' . $stat[1]['type_b'] . '",
                    "' . $stat[1]['yrn'] . '",
                    "' . $stat[1]['yrn_krit'] . '",
                    "' . $stat[1]['tm1'] . '",
                    "' . $stat[1]['tm2'] . '"
                )');
        }
        if (isset($stat[2])) {
            mysql_query('INSERT INTO `battle_stat`
                ( `battle`,`uid1`,`uid2`,`time`,`type`,`a`,`b`,`ma`,`mb`,`type_a`,`type_b`,`yrn`,`yrn_krit`,`tm1`,`tm2` ) VALUES (
                    "' . $this->info['id'] . '",
                    "' . $stat[2]['uid1'] . '",
                    "' . $stat[2]['uid2'] . '",
                    "' . $stat[2]['time'] . '",
                    "' . $stat[2]['type'] . '",
                    "' . $stat[2]['a'] . '",
                    "' . $stat[2]['b'] . '",
                    "' . $stat[1]['ma'] . '",
                    "' . $stat[2]['mb'] . '",
                    "' . $stat[2]['type_a'] . '",
                    "' . $stat[2]['type_b'] . '",
                    "' . $stat[2]['yrn'] . '",
                    "' . $stat[2]['yrn_krit'] . '",
                    "' . $stat[2]['tm1'] . '",
                    "' . $stat[2]['tm2'] . '"
                )');
        }
    }

Функции мы уже умеем, но не до конца. :)
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Мамкины защитники от скулей:
... `time_plt` >= htmlspecialchars(htmlentities(mysql_real_escape_string(time() + 24 * 60))) and id = htmlspecialchars(htmlentities(mysql_real_escape_string((int)$id))) ...
 

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
С одним заказчикос долго страдаю из за того, что автоподгрузка классов не работает, но разбираться было лень. В эти дни вот прямо прижало без этого, пошёл посмотреть повнимательнее, а там..
1658924417230.png

Никогда так не делайте!
Файлы ДОЛЖНЫ быть названы по одному шаблону.
Названия классов ДОЛЖНЫ соответствовать одному шаблону.
НЕ РЕКОМЕНДУЕТСЯ делать по несколько классов на файл.
РЕКОМЕНДУЕТСЯ чтобы имя файла совпадало с именем класса.
 
Последнее редактирование:

Insallah

Эксперт
👑
🏆
📜
Сообщения
1,743
Реакции
561
Есть ведь соглашение о том как писать код.
А чтоб на него ещё не ложили болт, если это легаси\БК...
По PSR, вроде, последние два пункта это тоже must, но тут хотя бы так, чтобы можно было лоадер натравить.
 
  • Like
Реакции: oxy
Сверху