1. JavaScript / Говнокод #20136

    +5

    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
    function insertComment(comment) {
        // todo: optimize this shit
        for (var j = 0; j < $scope.comments.length; ++j) {
            if ($scope.comments[j].thread_id == comment.thread_id) {
                $scope.comments[j] = comment;
                return;
            }
            if ($scope.comments[j].comment_id < comment.comment_id) {
                $scope.comments.splice(j, 0, comment);
                return;
            }
        }
        $scope.comments.push(comment);
    }
    
    for (var i = 0; i < data.length; ++i) {
        comment = data[i];
        comment.text = $sce.trustAsHtml(comment.text);
        comment.postedFuzzy = fuzzyDate(new Date(comment.posted), new Date());
        insertComment(comment);
    }

    Оптимальное набивание комментов в сток за O(n^2).

    http://146.185.130.46/ngk/

    bormand, 06 Июня 2016

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

    +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
    public function selectValueType($value)
        {
            $type = null;
            if (App::helperPhone()->parseMobile($value)) {
                $type = 1; //телефон    
            }
            if (App::helperEmail()->validate($value)) {
                $type = 2; //email
            }
            return $type;
        }
    
    
    
    А потом  в десятке методов:
    
     public function getLogin($value)
        {
            $type = $this->selectValueType($value);
            switch ($type) {
                case 1:
                    $type = 'phone';
                    break;
                case 2:
                    $type = 'email';
                    break;
            }
            if ($type) {
                $value = $type == 'phone' ? App::helperPhone()->parseMobile($value) : $value;
               // ... прочий говнокод
            }
    }

    Вот такие перлы достались в наследство. Приходится проводить полный рефакторинг :((

    Panda, 06 Июня 2016

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

    +2

    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
    .. Подставные Зомби .. продолжение
      при наличии в Локации нескольких Фортов / Замков / Башен может сложиться ситуация ,что Защищать Форт 
    уже нечем и более удобно избрать местом занятия Алхимией какую-нибудь Башню . При этом может быть 
    что Пара Замков находиться под контролем не особо приветливой стороны хотя с ней есть Серый Нейтралитет. 
      как БелАякс понял из Серой Книги Некромантии в который было полно различных Серых Советов для 
    разных случаев : то в таком случае рекомендовалось от имени Белиара выставить на дорогу к Покинутому Форту любую 
    Зомби Группу обычно состоящую из 10 -ка Армий - особо указывалось что это должны быть Потрепанные Зомби 
    так как их потрепанный вид мог намекать на возможное скрытое Проклятие которое могла содержать 
    такая Зомби Группа : с одной стороны не Некроманту будет сложно определить так ли это , с другой 
    если это будет Некромант то тогда это будет наверняка Союзник к тому же Герой уже находится в Башне . 
      При наличии возможности обычную Башню можно было сделать Волшебной Башней или Серой Башней 
    и иметь возможность влиять на такие Зомби Группы .. но это был немного другой момент ,а именно в этом случае 
    даже необычный Герой скорее всего проедет мимо таковой Зомби Группы ,если  будет куда .. 
    ..а куда - это скорее всего туда к одному из двух замков из той Пары Замков . Чем по-сути обеспечивалась 
    безопасность Серой Башни и возможно Форта - ведь Замок был на порядок мощнее в обороне , если тот 
    удастся захватить - но тогда Бой с Зомби Группой не желателен если Герой не собирался штурмовать Форт 
    по той причине что если он штурманет Форт ,то на Замок ему уже сил не хватит : обычно выбирался более 
    приемлимый для Штурма Замок в котором можно было прилично долго Копить Силы ...

    LispGovno, 04 Июня 2016

    Комментарии (158)
  4. Java / Говнокод #20132

    +5

    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
    // Если игрок временный то не даём изменять лимит
    
    public void updatePlayerLimits(Long userId, int limitAmount) {
            Player player = userComponent.getPlayer(userId);
            if (player == null) {
                throw new RuntimeException("Error on find user for updating user deposit limits, userId = " + userId);
            }
    
            if (player.isTemporary()) {
            	throw new RuntimeException("saveLimit-newAmount-tempPlayer-message");
            }
           player.setLimit(limitAmount)
    }
    
    // И где-то в контроллере админки
    
    public void doSubmit() {
    ...
    	try {
    		getPlayerLimitComponent().updatePlayerLimits(getPlayerId(), 10);
    	}catch(RuntimeException e){
    		if(!e.getMessage().equals("saveLimit-newAmount-tempPlayer-message"))
    			throw e;
    	}
    }

    Просто молча не даём админам изменять лимиты игроку если он временный

    stokito, 03 Июня 2016

    Комментарии (6)
  5. Куча / Говнокод #20131

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    /* This is the famous internal descriptor that UDFs can use, too. */
    typedef struct paramdsc {
        ISC_UCHAR	dsc_dtype;
        signed char		dsc_scale;
        ISC_USHORT		dsc_length;
        short		dsc_sub_type;
        ISC_USHORT		dsc_flags;
        ISC_UCHAR	*dsc_address;
    } PARAMDSC;

    Комментарии сохранены

    LispGovno, 03 Июня 2016

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

    −98

    1. 1
    ЭтоДокумент = Метаданные.Документы.Содержит(ЭтотОбъект.Метаданные())

    Примечательно, что вызывается из модуля формы документа, больше нигде процедура с ЭТИМ не используется.
    В документе проверяем, что это документ :/

    Moonlight, 03 Июня 2016

    Комментарии (16)
  7. Куча / Говнокод #20128

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    //Сегодня у меня вопрос по говнокоду.
    //Как у нас на говнокодике реализовано сколько непросмотренных комментариев в каждом треде?
    //Неужели на каждого юзера заводится счётчик и инкрементится при добавлении в каждой теме?
    //Неужели на каждого юзера на каждый комментарий заводится флаг, сообщающий какой комментарий прочитан, а какой нет?

    LispGovno, 03 Июня 2016

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

    −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
    if (avt_cust.Login == "admin") { Enter(GoodFile); } //Возможность добавления/редактирования/удаления для админа
                                    else 
                                    {
                                        if (good.Count != 0)
                                        {
                                            Korz(orderGood);                                                  //Просмотр корзины для пользователя
                                            Console.WriteLine("Продолжить покупки или оформить заказ?");
                                            Console.WriteLine("1.Продолжить покупки \t 2.Оформить заказ \t 3.Изменить количество товаров");
                                            int n = Convert.ToInt32(Console.ReadLine());
                                            if (n == 2) { OrderBuy(orderGood, avt_cust, OrderFile); }   //Обработка заказа    
                                            else { if (n == 3) { EditKorz(orderGood); } }      //Редактирование содержимого корзины
                                        } else { Console.WriteLine("Корзина пуста!"); }
                                    }   
    
    
    // Скрытые возможности foreach через инкримент i
      Console.WriteLine("У Вас в корзине: ");
                int all_price = 0;
                int i = 1;
                foreach (Goods o in orderGood)
                {
                    Console.WriteLine("{0}.{1} - {2} шт", o.Id, o.Name, o.Number);
                    Console.WriteLine("Цена за {0} шт: {1} грн", o.Number, o.Price * o.Number);
                    all_price = all_price + o.Price * o.Number;
                    i++;
                }
                Console.WriteLine("Сумма: {0} грн", all_price);

    Курсовая работа в УНИВЕРСИТЕТЕ, всем ставят пятерки.

    govnokoderphp, 03 Июня 2016

    Комментарии (7)
  9. JavaScript / Говнокод #20124

    +5

    1. 1
    2. 2
    3. 3
    if ($('.b-form__row_hide').hasClass('b-form__row_hide')) {
    	$('.b-form__row_hide').addClass('b-form__row_hide');
    }

    riddick6600, 02 Июня 2016

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

    +11

    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
    XmlPullParser xpp = ...
    
    xpp.nextTag();
    
    switch (xpp.getName()) {
        case "airport":
            if (xpp.getName().equals("airport")) {
                parseAirport(xpp, place);
            }
        case "border":
            if (xpp.getName().equals("border")) {
                parsePlaceBorder(xpp, place);
            }
        case "trainStation":
            if (xpp.getName().equals("trainStation")) {
                parseTrainStation(xpp, place);
            }
        default:
            break;
    }

    "Блин, че-то свитч не работает, что за хрень, сделаю-ка я дополнительную проверку внутри для надежности"

    moonson, 02 Июня 2016

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