1. Java / Говнокод #2188

    +81.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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    /**
         * Метод определения валюты.
         * Черная магия и костыль.
         */
        private int getCurrencyId(int branch, int currency) {
            int result = 0;
            //branch_id in (4, 5, 11, 20, 26, 60, 61) - наши фирмы
            if (branch == 4 || branch == 5 || branch == 11 || branch == 20 ||
                branch == 26 || branch == 60 || branch == 61) {
                result = 1;
            } else {
                switch (currency) {
                    case 1: {//доллары
                        result = 2;
                        break;
                    }
                    case 2: {//йены
                        result = 3;
                        break;
                    }
                    case 3: {//евро
                        result = 4;
                        break;
                    }
                    case 4: {//рубли
                        result = 1;
                        break;
                    }
                }
            }
            return result;
        }

    zlob.jc, 27 Ноября 2009

    Комментарии (3)
  2. PHP / Говнокод #2187

    +155.6

    1. 1
    mpqw("INSERT INTO {$GLOBALS['conf']['db']['prefix']}chat_mess SET uid = (SELECT cu.id FROM {$GLOBALS['conf']['db'] 'prefix']}chat_user as cu WHERE cu.uid = {$GLOBALS['conf']['user']['uid']} AND cu.sess = '{$GLOBALS['conf']['user']['sess']}'), time = ".time().", mess = '".htmlspecialchars($_POST['mess'])."'");

    А еще там такие вот запросы
    разумеется в одну строчку и экранируется очень хорошо htmlspecialchars

    ivan.borzenkov, 27 Ноября 2009

    Комментарии (3)
  3. PHP / Говнокод #2186

    +155.9

    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
    21. 21
    echo mpct('include/install.php');
    
    //подключение модуля
    function mpct($file_name, $arg = array(), $virez = 1){
    	foreach(explode(':', $GLOBALS['conf']['fs']['path']) as $k=>$v)
    		if (file_exists($file = "$v/$file_name")) break;
    	if (!file_exists($file = "$v/$file_name")) return "<center>Ошибка доступа к файлу</center>";
    	$func_name = create_function('$arg', strtr(file_get_contents($file), $virez ? array('<? die;'=>'', '<?php die;'=>'', '?>'=>'') : array()));
    	ob_start();
    	$func_name($arg);
    	$content = ob_get_contents();
    	ob_end_clean();
    	return $content;
    }
    
    //файл модуля
    <?php die;
    
    .......
    
    ?>

    С того-же чуда, что и предыдущие два
    Подключение модулей

    ivan.borzenkov, 27 Ноября 2009

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

    +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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    $GLOBALS['_utf8win1251'] = array(
    "\xD0\x90"=>"\xC0","\xD0\x91"=>"\xC1","\xD0\x92"=>"\xC2","\xD0\x93"=>"\xC3","\xD0\x94"=>"\xC4",
    ............
    "\xD1\x96"=>"\xB3","\xD1\x97"=>"\xBF","\xD1\x94"=>"\xBA","\xD1\x9E"=>"\xA2");
    $GLOBALS['_win1251utf8'] = array(
    "\xC0"=>"\xD0\x90","\xC1"=>"\xD0\x91","\xC2"=>"\xD0\x92","\xC3"=>"\xD0\x93","\xC4"=>"\xD0\x94",
    ............
    "\xB3"=>"\xD1\x96","\xBF"=>"\xD1\x97","\xBA"=>"\xD1\x94","\xA2"=>"\xD1\x9E");
    
    function utf8_win1251($a) {
    //    global $_utf8win1251;
        if (is_array($a)){
            foreach ($a as $k => $v) {
                if (is_array($v)) {
                    $a[$k] = utf8_win1251($v);
                } else {
                    $a[$k] = strtr($v, $GLOBALS['_utf8win1251']);
                }
            }
            return $a;
        } else {
            return strtr($a, $GLOBALS['_utf8win1251']);
        }
    }
    
    function win1251_utf8($a) {
    //    global $_win1251utf8;
        if (is_array($a)){
            foreach ($a as $k=>$v) {
                if (is_array($v)) {
                    $a[$k] = win1251_utf8($v);
                } else {
                    $a[$k] = strtr($v, $GLOBALS['_win1251utf8']);
                }
            }
            return $a;
        } else {
            return strtr($a, $GLOBALS['_win1251utf8']);
        }
    }

    а сколько всего...
    mb_convert_encoding и array_walk_recursive отменили...
    ну или хотя-бы от вложенных if избавиться можно

    ivan.borzenkov, 26 Ноября 2009

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

    +157.5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    if($conf['settings']['del_sess']){
    	$func = create_function('&$val, $key','$val = strtr(stripslashes($val), array("\\\\"=>"&#92;", \'"\'=>"&#34;", "\'"=>"&#39;"));');
    	array_walk ($get = $_GET, $func);
    	$post = $_POST;
    	if (isset($post['pass'])) $post['pass'] = 'hide';
    	if (isset($post['pass2'])) $post['pass2'] = 'hide';
    	array_walk ($post, $func);
    	array_walk ($files = $_FILES, $func);
    	array_walk ($server = $_SERVER, $func);
    	$request = serialize(array('$_POST'=>$post, '$_GET'=>$get, '$_FILES'=>$files, '$_SERVER'=>$server));
    }

    Вот так вот борются с magic_quotes

    ivan.borzenkov, 26 Ноября 2009

    Комментарии (3)
  6. C# / Говнокод #2183

    +128.8

    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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    public static T Parse<T>(string txt)
            {
                if (string.IsNullOrEmpty(txt))
                    return default(T);
    
                txt = txt.Trim();
    
                Type[] typeArray = new Type[] {
                    typeof(string),
                    typeof(T).MakeByRefType()};
    
                MethodInfo mi = typeof(T).GetMethod("TryParse", typeArray);
    
                T value = default(T);
    
                if (mi != null)
                {
                    object[] prms = new object[]{
                    txt,
                    value};
    
                    if ((bool)mi.Invoke(null, prms) && prms[1] != null)
                        value = (T)prms[1];
                }
    
                return value;
            }

    Не скажу что это такой уж говнокод, но что то говнистое в нем есть =)

    sven47, 26 Ноября 2009

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

    +135.6

    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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    public class Singleton<T> where T : class
        {
            private static T _Instance = null;
            protected static readonly object locker = new object();
    
            public static T Instance
            {
                get
                {
                    if (_Instance == null)
                    {
                        lock (locker)
                        {
                            if (_Instance == null)
                            {
                                ConstructorInfo[] info = typeof(T).GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic);
                                if (info.Length > 0)
                                    _Instance = (T)info[0].Invoke(null);
                            }
                        }
                    }
                    return _Instance;
                }
            }
    
            protected Singleton() { }
    
            static Singleton() { }
    
        }

    Вот такой вот универсальный сиглтон нашел в проекте

    sven47, 26 Ноября 2009

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

    +124.3

    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
    [ $(echo $a|cut -c$((${#a}-1))-) = "gz" ] && echo "Hello, world!"
    
    [ $(echo $a|sed "s/.*\(..\)/\1/") = "gz" ] && echo "Hello, world!"
    echo $a|sed -e"s/.*gz$/Hello, world\!/" -et -eD
    
    expr $a : .*gz >/dev/null && echo "Hello, world!"
    [ $(expr $a : '.*\(..\)') = "gz" ] && echo "Hello, world!"
    
    echo "ifelse(substr($a,eval(len($a)-2)),gz,\`Hello, world! ')"|m4
    
    case $a in *gz) echo "Hello, world!";; esac
    
    echo $a|emacs -batch -eval '(defun f (arg) "M") (if (string= (substring arg -2) "gz") (princ "Hello, world!\n")) )' -f f

    2168-му посвящается...

    Задача: Если последние два символа переменной "gz", то вывести "Hello, world!".
    Решение проблемы от поклонников разных инструментов. awk, perl и всякие tcl не писал, поскольку там не будет говнокода.
    11 строка, то, как обычно пишу я. ИЧСХ, все примеры, кроме последнего, строго соответствуют POSIX.2:)

    nil, 26 Ноября 2009

    Комментарии (5)
  9. Pascal / Говнокод #2180

    +115.9

    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
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    function TFilesStrings.LastSlash(FileString: string): byte;
    {*
      Функция для вычисления положения последнего слеша в строке
    *}
    var
      i: byte;
    begin
      Result := 0;
      for i := 1 to Length(FileString) do
        if (FileString[i] = #92) then Result := i;
    end;
    {==============================================================================}
    
    
    {******************************************************************************}
    function TFilesStrings.GetPath(FullFileName: string): string;
    {*
      Функция возвращает оконечный путь у заданному Файлу
    *}
    var
      SlNum: byte;
    begin
      Result := '';
      SlN um := LastSlash(FullFileName);
    
      Result := Copy(FullFileName, 1, SlNum);
    end;

    Вот ещё вспомнил... Не мог понять почему у меня не работает функция ExtractFilePath, пришлось писать вручную :)

    S@nderS, 25 Ноября 2009

    Комментарии (2)
  10. Pascal / Говнокод #2179

    +92.4

    1. 1
    2. 2
    if (a<0) or (a=0) 
    then ...

    Почему в универститах вместо того, чтобы ставить автоматы за такие вещи, не оценивают оптимизацию кода?

    Теперь понятно почему когда берёшь чьи-нибудь сорцы, пытаешься час понять логику в 10 строчек.

    S@nderS, 25 Ноября 2009

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