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

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

    +162

    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
    #ifdef WIN32
        string nameOfLibToLoad("C:\opt\lib\libctest.dll");
        lib_handle = LoadLibrary(TEXT(nameOfLibToLoad.c_str()));
        if (!lib_handle) {
            cerr << "Cannot load library: " << TEXT(nameOfDllToLoad.c_str()) << endl;
        }
    #else
        string nameOfLibToLoad("/opt/lib/libctest.so");
        lib_handle = dlopen(nameOfLibToLoad.c_str(), RTLD_LAZY);
        if (!lib_handle) {
            cerr << "Cannot load library: " << dlerror() << endl;
        }
    #endif

    кроссплатформенная загрузка шаренной библиотеки... может я чего то не понимаю в этой жизни, но... совершенно здесь лишний класс строки, который делает совершенно лишний вызов конструктора и добавляет совершенно лишние n-килобайт к размеру сборки...
    ссыль: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

    ReL, 18 Февраля 2011

    Комментарии (11)
  3. JavaScript / Говнокод #5707

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    window.onload = function() {
      var canvas = document.getElementById('canvas');
      var ctx = canvas.getContext('2d');
    
      canvas.height = canvas.height;
      canvas.width = canvas.width;
    
    // …
    }

    Jesus, 17 Февраля 2011

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

    +162

    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
    public static function perform($table, $data, $action = 'insert', $parameters = '') {
    		reset($data);
    		if ($action == 'insert') {
    			$query = 'INSERT INTO ' . $table . ' (';
    			while (list($columns, ) = each($data)) {
    				$query .= $columns . ', ';
    			}
    			$query = substr($query, 0, -2) . ') values (';
    			reset($data);
    			while (list(, $value) = each($data)) {
    				switch ((string)$value) {
    					case 'now()':
    						$query .= 'NOW(), ';
    						break;
    					case 'null':
    						$query .= 'NULL, ';
    						break;
    					default:
    						$query .= '\'' . mysql_escape_string($value) . '\', ';
    						break;
    				}
    			}
    			$query = substr($query, 0, -2) . ')';
    		} elseif ($action == 'update') {
    			$query = 'UPDATE ' . $table . ' SET ';
    			while (list($columns, $value) = each($data)) {
    				switch ((string)$value) {
    					case 'now()':
    						$query .= $columns . ' = NOW(), ';
    						break;
    					case 'null':
    						$query .= $columns .= ' = NULL, ';
    						break;
    					default:
    						$query .= $columns . ' = \'' . mysql_escape_string($value) . '\', ';
    						break;
    				}
    			}
    			$query = substr($query, 0, -2) . ' WHERE ' . $parameters;
    		}
    
    		self::request($query);
    	}

    Вот так у нас вставляют в базу :)

    wmmorgun, 15 Февраля 2011

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

    +162

    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 function create_folder ( $path, $rights = self::default_rights )
    	{
    		$result = true;
    		// Получаем список папок
    		$folders = explode( DIRECTORY_SEPARATOR, trim( self::get_absolute_path( $path ), DIRECTORY_SEPARATOR ) );
    		$exists = true;
    		// Ищем существующую папку
    		while ( $exists && sizeof( $folders ) )
    		{
    			$exists_folder[] = array_shift( $folders );
    			$exists = realpath( implode( DIRECTORY_SEPARATOR, $exists_folder ) );
    		}
    		if ( !file_exists( implode( DIRECTORY_SEPARATOR, $exists_folder ) ) )
    		{
    			array_unshift( $folders, array_pop( $exists_folder ) );
    		}
    		$parent = implode( DIRECTORY_SEPARATOR, $exists_folder );
    		unset( $exists_folder );
    		// поочередно создаем папки
    		foreach ( $folders as & $folder )
    		{
    			$parent .= DIRECTORY_SEPARATOR . $folder;
    			$result = mkdir( $parent, $rights );
    		}
    		clearstatcache( );
    		return $result;
    	}

    Вот что значит не знать про необязательный аргумент recursive у mkdir...

    GhOsTMZ, 14 Февраля 2011

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

    +162

    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
    <?php
    function pagination($page, $z, $url) 
       // номер стр, число страниц в табл, УРЛ)
       {
       if (!preg_match('/\\?/is', $url)) $url = $url.'?'; else $url = $url.'&';
       // если в адресе встречается ?, то в конце добавляем &, если нет - то ?
       
        echo "<div style='text-align:center;'> <a href='".$url."z=".$z."&&page=1'>Первая</a>&nbsp; &nbsp;";
        if ($page>1) print("<a href='".$url."z=".$z."&&page=".($page-1)."'>Предыдущая</a> &nbsp; &nbsp;");
            print ("Страница $page из $z &nbsp; &nbsp;");
            if ($page<$z) print("<a href='".$url."z=".$z."&&page=".($page+1)."'>Следующая</a>&nbsp; &nbsp;");
            echo "<a href='".$url."z=".$z."&&page=$z'>Последняя</a>";
            echo "<p style='margin-top:10px; margin-bottom:10px'>";
            
            for ($i = 1; $i <= $z; $i++) 
        if ($i == $page) echo "<span class='greenbig'> $i </span> &nbsp;";
        else echo "<a href='".$url."z=".$z."&&page=$i'>$i</a> &nbsp;"; 
            echo "</p></div>";
        }
     
     
    include('db.php');
    if(isset($_GET['page']))  $page=$_GET['page']; else $page="1";
    $plim=($page-1)*20;
    $query=mysql_query("SELECT * FROM zomplog_news ORDER BY `id` DESC LIMIT $plim, 20");
    while($row = mysql_fetch_array($query)) {
    $title = $row['title'];
    $text = $row['text'];
    $date = $row['date'];
     
    ?>
     
     
       <br><table class='panel'><tr class='phead'>
       <td><? echo "$title";?><td align='right'> <? echo "$date";?><tr><td colspan=2 class='pcontend'>
      <? echo "$text";?>
       <tr><td class='pend'>
       <td class='pend' align='right'></table>
     
     <?}
      $table = 'zomplog_news';
       if (isset($_GET['z'])) $z=$_GET['z']; else  
       {
       $r = mysql_query("SELECT COUNT(*) FROM $table");
       $z1 = mysql_result($r,0);
       $z = ceil($z1/20); ## z - общее число страниц
       }
    pagination ($page, $z, 'index.php');
     
    ?>

    qbasic, 13 Февраля 2011

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

    +162

    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($arParams["BLOG_VAR"])<=0)
    	$arParams["BLOG_VAR"] = "blog";
    if(strLen($arParams["PAGE_VAR"])<=0)
    	$arParams["PAGE_VAR"] = "page";
    if(strLen($arParams["USER_VAR"])<=0)
    	$arParams["USER_VAR"] = "id";
    if(strLen($arParams["POST_VAR"])<=0)
    	$arParams["POST_VAR"] = "id";
    	
    $arParams["PATH_TO_BLOG"] = trim($arParams["PATH_TO_BLOG"]);
    if(strlen($arParams["PATH_TO_BLOG"])<=0)
    	$arParams["PATH_TO_BLOG"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#");
    
    $arParams["PATH_TO_BLOG_CATEGORY"] = trim($arParams["PATH_TO_BLOG_CATEGORY"]);
    if(strlen($arParams["PATH_TO_BLOG_CATEGORY"])<=0)
    	$arParams["PATH_TO_BLOG_CATEGORY"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=blog&".$arParams["BLOG_VAR"]."=#blog#"."&category=#category_id#");
    	
    $arParams["PATH_TO_POST_EDIT"] = trim($arParams["PATH_TO_POST_EDIT"]);
    if(strlen($arParams["PATH_TO_POST_EDIT"])<=0)
    	$arParams["PATH_TO_POST_EDIT"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=post_edit&".$arParams["BLOG_VAR"]."=#blog#&".$arParams["POST_VAR"]."=#post_id#");
    
    $arParams["PATH_TO_USER"] = trim($arParams["PATH_TO_USER"]);
    if(strlen($arParams["PATH_TO_USER"])<=0)
    	$arParams["PATH_TO_USER"] = htmlspecialchars($APPLICATION->GetCurPage()."?".$arParams["PAGE_VAR"]."=user&".$arParams["USER_VAR"]."=#user_id#");

    Из проекта на битрикс, обратите внимание на импровизацию в вариантах написания функции strlen D)))
    Код успешно работает в продакшене более года.

    govnomes, 11 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<const bool Value>
    const bool BoolToFunc(void) const 
    {
    	return Value;
    };

    Говногость, 11 Февраля 2011

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

    +162

    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
    class GlData2DLine
    {
      virtual std::vector<Vec2d> getDecimatedPoints();
     protected:
      std::vector<Vec2d> c_decimated_points;
    }
    
    std::vector<Vec2d> GlData2DLine::getDecimatedPoints()
    {
      return c_decimated_points;
    }
    
    class GlData2DLineOD : public GlData2DLine
    {
      virtual std::vector<Vec2d> getDecimatedPoints();
    }
    
    std::vector<Vec2d> GlData2DLineOD::getDecimatedPoints()
    {
      return c_decimated_points;
    }

    Наш любимый китаец увлекся ООП и полиморфизмом что забыл очевидное.

    kitaec, 09 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    <?php
        function is_get($id) {
            return (count(array_unique(str_split($id))) == 1);
        }
    ?>

    Гет или не гет?)

    hidespb, 09 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    SeismicDriver* SeismicSelectionDG::seismicDriver()
    {
      Exf2dMW* mw = Exf2dMW::getMW(this);
      _seismicDriver = mw->seismicDriver();
      if ( !mw || !_seismicDriver)
        return 0;
    
      return _seismicDriver;
    }

    Все тот же коллега китаец. Exf2dMW - класс главного окна приложения. Во-первых бесмыссленно проверять его на 0, потому что без него вообще бы ничего не работало, но и как видно проверяет его он все равно не там. Ну и проверка на 0 _seismicDrvier тоже лишняя. Итог никакие проверки не нужны да и вообще первую строку в методе можно перенести в конструктор а возвращать член класса _seismicDriver.

    kitaec, 09 Февраля 2011

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