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

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

    0

    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
    Запрос = Новый Запрос;
    	Запрос.Текст = 
    	"ВЫБРАТЬ
    	|	ЭтапРемонт.Номер КАК Номер
    	|ИЗ
    	|	Документ.ЭтапРемонт КАК ЭтапРемонт
    	|ГДЕ
    	|	ЭтапРемонт.Основание = &Основание";
    	Запрос.УстановитьПараметр("Основание", Объект.Ссылка);
    	Выб = Запрос.Выполнить().Выбрать();
    	Выгрузка = Запрос.Выполнить().Выгрузить();
    	Количество = Выб.Количество();
    	Если Количество > 0 Тогда
    		Ссыль = Выгрузка[0].Номер;
    		ЭтаФорма.Элементы.Этап.Заголовок = Документы.ЭтапРемонт.НайтиПоНомеру(Ссыль);
    	КонецЕсли;

    Задача кода - установить текстовое представление документа в надписи на форме, для этого автор сначала получает номер требуемого документа, потом проверяет выборку на наличие записей, а потом по полученному номеру ищет ссылку методом НайтиПоНомеру.
    Говнокод в том, что:
    1. Ссылку можно получить сразу же в запросе
    2. Выгружать выборку в коллекцию значений нет никакой необходимости, можно всё необходимое взять из выборки, она для этого и предназначена.
    Автор - один из франей Абакана.

    VladC, 07 Мая 2019

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

    0

    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
    function getFlatsParametrsById(int $id) {
            //...
    
            $cache_time = 3600 * 24 * 31;
            $postId = substr($id, -2);
            $cache_time += 720 * $postId;
    
            //...
    
            $obCache = new CPHPCache;
            if ($obCache->InitCache($cache_time, $cache_id, $cache_dir)) {
    
            //...

    И да, почему бы не вычислять время жизни кэша по его ИДшнику?

    gridark, 30 Апреля 2019

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

    0

    1. 1
    Onetime = ?config(onetime, Config) =:= true,

    Boolshit? Нет, это динамическая питуизация.

    CHayT, 24 Апреля 2019

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

    −1

    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
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    <?php $connection = mysqli_connect ('localhost','root','','userlistdb'); 
           
            $per_page = 25;
            $page = 1;
    
    if (isset($_GET['page']))
            {
        $page = (int) $_GET['page'];
    }
            $total_cout_q = mysqli_query($connection, "SELECT COUNT(id_com) AS `total_count` FROM `comment`")
            $total_count = mysqli_fetch_assoc($total_cout_q);
            $total_count = $total_count['total_count'];
            
            $total_pages = ceil ($total_count/ $per_pages);
            if($page <= 1 || $page > $total_pages)
            {
                $page = 1;
            }
            $offset = ($per_page * $page)- $per_page;
            $coments = mysqli_query($connection, "SELECT *  `total_count` FROM `comment` ORDER  BY `id_com` DESC LIMIT  $offset, $per_page"); 
           $coments_exist = true;
            if(mysqli_nu,_rows($coments) <= 0 ){
               echo 'Нет коментариев';
                $coments_exist = false;
           }
        while( $result = mysqli_fetch_assoc($coments){
                
            } 
            $row = mysqli_query($connection, "SELECT * FROM `comment` ORDER  BY `id_com` DESC LIMIT 25");      
        ?>
    
         <table>
        <tr>
            <th><a href="?orderBy=username">username:</a>
            </th>
            <th>  <a href="?orderBy=email">email:</a>
            </th>
            <th>  <a href="?orderBy=recorded_date"> Date:</a>
            </th>
            <th>  <a href="?orderBy=comment">Added Date:</a>
            </th>
        </tr>
        
             <?php 
                while($row = mysql_fetch_array($result)){
        ?>
          <tr>
           <th><?php echo $result['username']; ?> </th>
           <th><?php echo $result['email']; ?> </th>
           <th><?php echo $result['Date']; ?> </th>
           <th><?php echo $result['comment']; ?> </th>
           </tr>
         </table>
    
    <?php //Страницы 
                    if ( $coments_exist = true)
                    {
                        echo '<div class="paginator">';
                    if($page > 1)
                        {
                    echo '<a href= "/Guestbook.php?page='.($page - 1).'">« предыдущий </a>'; 
                    }  if($page < $total_pages)
                        {
                    echo '<a href= "/Guestbook.php?page='.($page + 1).'"> Cледующая &eaquo; </a>';        
                    }
                        echo '</div>';
                    }
                    
                    $orderBy = array('username', 'email', 'recorded_date', 'comment');
    
    $order = 'username';
    if (isset($_GET['orderBy']) && in_array($_GET['orderBy'], $orderBy)) {
        $order = $_GET['orderBy'];
          }
             $query = 'SELECT * FROM `comment` ORDER BY '.$order;
         }
    mysqli_close();
    ?>

    Привет, тут в коде сортировка и переход по страницыам, сортировка в строки с таблицы HTML, вызываемые из MySQL, при нажиматие на username едёт сортировка по алфавиту, а затем нажимать на email или Date и сортировать по дате, но выдаёт ошыбки...

    arts, 18 Апреля 2019

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

    −102

    1. 1
    SELECT MAX(len) from huis

    bormandyan, 03 Апреля 2019

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

    −1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    if (userSettingsErrorType != null && userSettingsErrorType.getError() != null &&
    				userSettingsErrorType.getError().getMessage() != null && userSettingsErrorType.getError().getMessage().getName() != null &&
    				userSettingsErrorType.getError().getMessage().getName().length != 0) {
    			try {
    				getView().ifPresent(v -> v.setFieldErrorMessage(SettingsField.NAME,
    				                                                userSettingsErrorType.getError().getMessage().getName()[0]));
    			} catch (Exception e) {
    				Crashlytics.logException(e);
    			}
    }

    наткнулся на сие чудо во время рефакторинга.

    copatel, 28 Марта 2019

    Комментарии (3)
  8. Си / Говнокод #25439

    0

    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
    if (memory[i] == CRG && memory[i + 1] == STDI) {
    	fprintf(code, "%d %d ", CRG, STDI);
    	i++;
    }
    else if (memory[i] == CRC && memory[i + 1] == STDI) {
    	fprintf(code, "%d %d ", CRC, STDI);
    	i++;
    }
    else if (memory[i] == PRG && memory[i + 1] == STDI) {
    	fprintf(code, "%d %d ", PRG, STDI);
    	i++;
    }
    else if (memory[i] == PRC && memory[i + 1] == STDI) {
    	fprintf(code, "%d %d ", PRC, STDI);
    	i++;
    }

    h: post/442988 / https://github.com/Centrix14/TVM/blob/master/TVM/ngl.c
    На статье стоит меточка «Tutorial».

    gost, 09 Марта 2019

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

    +1

    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
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    <?php
    
    namespace AppHttpControllers;
    
    use AppModelsCardUserModel;
    use IlluminateHttpRequest;
    use AppModelsUserModel;
    use AppModelsArenaBattleModel;
    use AppModelsArenaCardsModel;
    use Auth;
    use Services;
    
    class ArenaController extends Controller
    {
        public function index()
        {
            $issetBattle = ArenaBattleModel::where('user1', Auth::user()->id)->orWhere('user2', Auth::user()->id)->count();
            if($issetBattle == 0)
            {
                $result = 'Начать подбор противника!<br>
                <a href="/arena/find" class="btn btn-games2 btn-block">Искать</a>';
            }
            else
            {
                $battle = ArenaBattleModel::where('user1', Auth::user()->id)->orWhere('user2', Auth::user()->id)->first();
                if($battle->status == 'card1_pick') return redirect('/arena/pick/1');
                if($battle->status == 'card2_pick') return redirect('/arena/pick/2');
                if($battle->status == 'battle') return redirect('/arena/battle');
                if($battle->status == 'result') return redirect('/arena/result');
                if($battle->user1 == Auth::user()->id) $opponent = $battle->user2;
                else $opponent = $battle->user1;
                if($opponent == 0) $result = 'Идёт поиск противника!<br>
                <a href="/arena/cancel" class="btn btn-games2 btn-block">Отменить поиск</a>';
                else
                {
                    if($battle->start_time < time())
                    {
                        $battle->status = 'card1_pick';
                        $battle->save();
                        return redirect('/arena/pick/1');
                    }
                    $result = 'Противник найден!<br>
                    '.($battle->start_time-time() > 0 ? 'До начала боя: '.Services::timer($battle->start_time-time()).'<br>' : 'Бой начался!<br>').'
                    <a href="/arena/cancel" class="btn btn-games2 btn-block">Отменить поиск</a>';
                }
            }
            return view('game.battles.arena.index', ['result' => $result]);
        }
    
        public function find()
        {
            $issetBattle = ArenaBattleModel::where('user1', Auth::user()->id)->orWhere('user2', Auth::user()->id)->count();
            if($issetBattle > 0) return back()->with('error', 'Подбор уже начат!');
            $battles = ArenaBattleModel::where('status', 'prepare')->where('user2', 0)->inRandomOrder();
            $myMaxCardLevel = Services::getMaxCardLevel(Auth::user()->id);
            if($battles->count() == 0)
            {
                ArenaBattleModel::create([
                    'user1' => Auth::user()->id,
                    'card_level' => $myMaxCardLevel+1
                ]);
                return back()->with('ok', 'Поиск противника начат!');
            }
            else
            {
                $battles = $battles->first();
                if($battles->card_level-1 > $myMaxCardLevel) $battles->card_level = $myMaxCardLevel+1;
                $battles->user2 = Auth::user()->id;
                $battles->start_time = time()+30;
                $battles->save();
                return back()->with('ok', 'Противник найден!');
            }
        }
    
        public function cancelFind()
        {
            $issetBattle = ArenaBattleModel::where('user1', Auth::user()->id)->orWhere('user2', Auth::user()->id);
            if($issetBattle->count() == 0) return back()->with('error', 'Подбор ещё не начат!');
            $foundBattle = $issetBattle->first();
            if($foundBattle->user1 == Auth::user()->id) $foundBattle->delete();
            else
            {
                $opponentMaxCardLevel = Services::getMaxCardLevel($foundBattle->user1);
                if($opponentMaxCardLevel != $foundBattle->card_level) $foundBattle->card_level = $opponentMaxCardLevel+1;
                $foundBattle->user2 = 0;
                $foundBattle->save();
            }
            return back();
        }
    }
    // и еще 10кб кода

    код игры на Laravel . Вкусняшка

    eskrano, 27 Февраля 2019

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

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    struct Data { /* ... */ };
    
    class Items {
      void insert(Data&& data) {
        _storage.emplace_back(std::forward<Data>(data));
      }
    private:
      std::vector<Data> _storage;
    };

    Dumb luck. Nuff said.

    Elvenfighter, 08 Февраля 2019

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

    0

    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
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    fn do_get_summary(req: &HttpRequest<AppState>) -> SummaryFuture {
        let token = req.token().expect("ISE: token not verified during AuthMiddleware stage");
    
        let datetime = req.match_info()
            .get("timestamp")
            .and_then(|s| i64::from_str(s).ok())
            .map(|ts| NaiveDateTime::from_timestamp(ts, 0));
    
        let datetime = match datetime {
            Some(dt) => dt,
            None => return Box::new(future::result(Err(ServiceError::InvalidSetting {
                key: "timestamp".into(),
                hint: "local time in seconds since Unix Epoch".into()
            }.into())))
        };
    
        let db = req.state().db.clone();
    
        let settings = req.state().db
            .send(db::GetSettings(token.clone()))
            .map_err(failure::Error::from)
            // flatten error
            .and_then(|res| match res {
                Ok(settings) => Ok(settings),
                Err(err) => Err(err)
            });
    
        let fitbit = req.state().db
            .send(db::GetSettingsFitbit(token))
            .map_err(failure::Error::from)
            // Check if there is token and flatten error
            .and_then(|res| match res {
                Ok(fitbit) => {
                    if fitbit.client_token.is_none() {
                        Err(ServiceError::TokenExpired.into())
                    } else {
                        Ok(fitbit)
                    }
                },
                Err(err) => Err(err)
            });
    
        let headmaster = req.state().headmaster.clone();
    
        let summary_and_token = settings.join(fitbit)
            .and_then(move |(settings, fitbit)| -> Box<dyn Future<Item = (Summary, FitbitToken), Error = failure::Error>> {
                // Deserialize token
                let token = fitbit.client_token.expect("ISE: token option is not cleared");
                let fitbit_token = match FitbitToken::from_json(&token) {
                    Ok(token) => token,
                    Err(err) => return Box::new(future::err(ServiceError::TokenExpired.into()))
                };
    
                let headmaster_config = master::HeadmasterConfig {
                    minimum_active_time: settings.hourly_activity_goal,
                    max_accounted_active_minutes: settings.hourly_activity_limit.unwrap_or(settings.hourly_activity_goal * 3),
                    debt_limit: settings.hourly_debt_limit.unwrap_or(settings.hourly_activity_goal * 3),
                    day_begins_at: settings.day_starts_at,
                    day_ends_at: settings.day_ends_at,
                    day_length: settings.day_length.unwrap_or((settings.day_ends_at.hour() - settings.day_starts_at.hour()) as i32),
                    user_date_time: datetime,
                };
    
                let auth_data = FitbitAuthData {
                    id: fitbit.client_id,
                    secret: fitbit.client_secret,
                    token: fitbit_token,
                };
    
                let future = headmaster.send(master::GetSummary::<FitbitActivityGrabber>::new(headmaster_config, auth_data))
                    .map_err(failure::Error::from)
                    // flatten error
                    .and_then(|res| res);
    
                Box::new(future)
            });
    
        let summary = summary_and_token
            .and_then(move |(summary, fitbit_token)| {
                db.send(db::UpdateSettingsFitbit::new(
                    token, db::models::UpdateFitbitCredentials {
                        client_token: Some(Some(fitbit_token.to_json())),
                        ..Default::default()
                    }))
                    .map_err(failure::Error::from)
                    .and_then(|_| Ok(summary))
            });
    
        Box::new(summary)
    }

    Фьючи в Rust до рефакторинга -- тот еще говнокод

    mersinvald, 12 Января 2019

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