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

    В номинации:
    За время:
  2. PHP / Говнокод #5958

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <?  
        $result = mysql_query("SELECT date, article, post_text FROM posts");
        while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
            echo "<div class=\"block\">\n\t<span class=\"da_ar\" id=\"left\">\n\t\t".$row[0]."\n\t</span>\n\t<span class=\"da_ar\" id=\"right\">\n\t\t".$row[1]."\n\t</span>\n\t<div class=\"block_text\"><pre>\n".$row[2]."</pre>\n\t</div>\n</div>";
        }
    
        mysql_free_result($result);
    ?>

    Да - да - да, все это в одну строчку...
    Не совсем, конечно, говно, но все же:)

    AlexT, 11 Марта 2011

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

    +161

    1. 1
    2. 2
    $iMin = $page - (($page<=$limiter)?$page-1:$limiter) + ((($pagesCount-$page)<$limiter)?($pagesCount-$page-$limiter):0);
    $iMax = $page + ((($pagesCount-$page)<$limiter)?$pagesCount-$page:$limiter) + (($page<=$limiter)?$limiter-$page:0);

    -ggorky, 10 Марта 2011

    Комментарии (0)
  4. JavaScript / Говнокод #5933

    +161

    1. 1
    var CURRENCY = {$company_info|@json_encode}.currency;

    Вот такой код встретился в проекте в одном из Smarty шаблонов
    $company_info - некий ассоциативный массив.

    x86demon, 09 Марта 2011

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

    +161

    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
    41. 41
    <?php
    class Cached_Query
    {
    
     function __construct()
     { 
      $mem_cache = new Memcache;
      $mem_cache->connect('localhost', 11211); 
       mysql_connect("localhost", "root", "");
      }
    
     function Query($query_text)
     {
      $ms_query = mysql_query("SELECT * FROM sometable WHERE somedata = `$query_text`");
      $query_data = mysql_fetch_array($ms_query);
      return $query_data;
     }
    
     function QueryCache($query_text, $seconds)
     {
      $query_data = $mem_cache->fetch("somedata", $query_text);
      if(!$query_data)
      {
       $ms_query = mysql_query("SELECT * FROM sometable WHERE somedata = `$query_text`");
       $query_data = mysql_fetch_array($ms_query);
       $mem_cache->add("somedata", $query_text, false, $seconds)
      }
      
      return $query_data;
     }
    
     function FetchArray($result)
     {
      foreach($result as $key)
      {
        echo $key;
      }
     }
    
    }
    ?>

    Напишите класс-обертку для работы с php_mysql (либо mysqli), реализуйщий функции кеширования с помощью memcached. Достаточно трех методов:
    Query($query_text);//обычный запрос
    QueryCache($query_text,$seconds);//кеширование запроса
    FetchArray($result);//вывод результатов

    Да говно-вопрос.

    varg242, 05 Марта 2011

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

    +161

    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
    if
    (
    	!(
    		(
    			strlen($chld_phone) == 10 &&
    			(
    				substr($chld_phone,0,3) == '087' ||
    				substr($chld_phone,0,3) == '088' ||
    				substr($chld_phone,0,3) == '089'
    			)
    		) ||
    		(
    			strlen($chld_phone) == 12 &&
    			(
    				substr($chld_phone,0,5) == '35987' ||
    				substr($chld_phone,0,5) == '35988' ||
    				substr($chld_phone,0,5) == '35989'
    			)
    		)
    	)
    )
    {
    	//Грешка
    }

    Телефон проверки :)

    wyand, 22 Февраля 2011

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

    +161

    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
    41. 41
    42. 42
    43. 43
    <?php
            define('PATH_LEN', 32);
            define('ALPH_SIZE', 66);
            
            class Security
            {
                    public static $rus_alphabet = array('А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё',   'Ж', 'ж',   'З', 'з', 'И', 'и', 'Й', 'й',   'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч',   'Ш', 'ш',   'Щ', 'щ',   'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь',     'Э', 'э', 'Ю', 'ю',     'Я', 'я');
                    public static $eng_alphabet = array('A', 'a', 'B', 'b', 'V', 'v', 'G', 'g', 'D', 'd', 'E', 'e', 'Yo', 'yo', 'Zh', 'zh', 'Z', 'z', 'I', 'i', 'Ji', 'ji', 'K', 'k', 'L', 'l', 'M', 'm', 'N', 'n', 'O', 'o', 'P', 'p', 'R', 'r', 'S', 's', 'T', 't', 'Y', 'y', 'F', 'f', 'H', 'h', 'C', 'c', 'Ch', 'ch', 'Sh', 'sh', 'Ch', 'ch', '_', '_', '_', '_', '_', '_', '_', '_', 'U', 'u', 'Ya', 'ya');
                    
                    static public function Transform($string)
                    {
                            $string = htmlspecialchars($string);
                            $string = strip_tags($string);
                            
                            return $string;
                    }
                    
                    static public function TransformName($string)
                    {
                            $temp = '';
                            
                            for($i = 0; $i < strlen($string); $i++)
                            {
                                    if($string[$i] === ' ')
                                            {
                                                    $temp += '_';
                                                    continue;
                                            }
                                    
                                    for($j = 0; $j < ALPH_SIZE; $j++)
                                            if(Security::$rus_alphabet[$j] === Security::$string[$i])
                                                    {
                                                            $temp += Security::$eng_alphabet[$j];
                                                            continue 2;                                                     
                                                    }
                                    $temp += $string[$i];                   
                            }
                            
                            return $temp;
                    }
                    
            }
    ?>

    qbasic, 17 Февраля 2011

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

    +161

    1. 1
    2. 2
    3. 3
    std::auto_ptr<ItemDesc> desc(new ItemDesc());
    ...
    m_items.insert(desc->m_item->m_name, desc.release());

    Да, я тоже говнокодер. А ведь предупреждали...

    Kirinyale, 16 Февраля 2011

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

    +161

    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
    /**
     * Standard QWidget Constructor
     */
    SeismicSelectionDG::SeismicSelectionDG(QWidget *parent) 
      : QDialog(parent), ui(new Ui::SeismicSelectionDG)
    {
    ...
    }
    
    /**
     * Destructor
     */
    SeismicSelectionDG::~SeismicSelectionDG()
    {
      if(ui) delete ui;
    }
    
    /**
     * Set title to dialog box
     * @param title The title for dialog box
     */
    void SeismicSelectionDG::setDialogTitle(const QString& title)
    {
      QDialog::setWindowTitle(title);
    }

    Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.

    kitaec, 09 Февраля 2011

    Комментарии (39)
  10. C++ / Говнокод #5605

    +161

    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
    41. 41
    // из объявления класса
    ...
        float   _x_3DMin;         /**< Min X value */
        float   _x_3DMax;         /**< Max X value */
        float   _z_3DMin;         /**< Min Z depth value */
        float   _z_3DMax;         /**< Max Z depth value */
    
        /* 2D seismic variables */
        float   _x_2DMin;         /**< Min X value */
        float   _x_2DMax;         /**< Max X value */
        float   _z_2DMin;         /**< Min Z depth value */
        float   _z_2DMax;         /**< Max Z depth value */
    
        /* No seismic selection variables */
        float   _xMin;         /**< Min X value */
        float   _xMax;         /**< Max X value */
        float   _zMin;         /**< Min Z depth value */
        float   _zMax;         /**< Max Z depth value */
    
    ...
    
    void SeismicSelectionDG::initMembers()
    {
      // initialise values
      _x_3DMin = 0.0F;
      _x_3DMax = 0.0F;
      _z_3DMin = 0.0F;
      _z_3DMax = 0.0F;
    
      _x_2DMin = 0.0F;
      _x_2DMax = 0.0F;
      _z_2DMin = 0.0F;
      _z_2DMax = 0.0F;
    
      _xMin = 0.0F;
      _xMax = 0.0F;
      _zMin = 0.0F;
      _zMax = 0.0F;
    
      ...
    }

    Ну и весь остальной код состоит из этих говно-паттернов. Об абстракциях товарищ понятия не имеет.

    kitaec, 09 Февраля 2011

    Комментарии (5)
  11. C++ / Говнокод #5599

    +161

    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
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    // Часть первая. Объявления. Exceptions.hpp
    
    template <typename E>
    struct ExeptionKeeper 
    {
        E * exptn;
        ExeptionKeeper(E * ex) 
        {
            exptn = ex;
        }
        ~ExeptionKeeper()
        {
            if(exptn != NULL )
            {
                delete exptn;
            }
        }
        E * operator -> () 
        { 
            return exptn; 
        }
    };
    
    #define EX_TRY(XX) try { XX }
    #define EX_CATCH(TT, NAME, XX) catch (TT *_ex) { ExeptionKeeper<TT> NAME(_ex);  XX }
    
    /// Часть вторая. Использование. ModelsHelper.cpp
    
    .... // код
            EX_TRY
            (
               ............
                 TestParams(args); // кидает new ParamsException в случае неудачи
               ............
                 TestFunctions(funclist); // Кидает new FuncsException ... 
               ............
               //// тут еще есть вызовы, кидающие исключения
               ............
            ) 
            EX_CATCH
            (   ParamsException, exp,
                GLogger(levelerror).Log("Invalid params for model ", exp->model(), " [", exp->paramlist().str(), "]");
            ) 
            EX_CATCH
            (   FuncsException, exp,
                GLogger(levelerror).Log("Invalid functions for model ", exp->model(), " [", exp->funclist().str(), "]");
            ) 
            EX_CATCH
            (   LevelsException, exp,
                GLogger(levelerror).Log("Invalid levels for model ", exp->model(), " [", exp->levelslist().str(), "]");           
            ) 
            EX_CATCH
            (    .... , exp,
                ........
            )
    .... // код

    И снова на тему исключений.
    Прислал приятель. Какой-то софт для аэропортов.
    Комменты на русском мои.

    ossa, 09 Февраля 2011

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