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

    +70

    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
    // there is class PlayerExt, which extends class Player...
    // min >= 0
    // max <= players.size()
    
        List<PlayerExt> players = playerManager.getPlayers(contestId);
        Player[] response = new Player[players.size()];
    
        for (int i = min; i < max; i++) {
            response[i] = players.get(i);
            if (!players.get(i).isQualified()) {
                response[i].setChipStack(BigDecimal.valueOf(-1));
            }
            response[i].setPosition(i + 1);
            response[i].setCustomerId(players.get(i).getCustomerId());
        }

    Для таких начальных условий, как обозначено в комментарии в начале кода, формируем список игроков.
    Особенно вдохновляет самая последняя инструкция в теле цикла.

    Запостил: wissenstein, 09 Октября 2013

    Комментарии (15) RSS

    • Зачем вообще массивы в высокоуровневом коде?
      Ответить
      • Ну, конкретно тут массив требуется выдавать в качестве результата операции. Другое дело — как его сформировать. А когда я сделал рефакторинг этого фрагмента, то последняя сторка цикла стала предпоследней и приняла вид
        player.setCustomerId(player.getCustomerId());

        что и побудило опубликовать фрагмент. :)
        Ответить
        • > Ну, конкретно тут массив требуется выдавать в качестве результата операции.

          Почему бы не отрефакторить в List? Или это legacy API какой-то?
          Ответить
      • а разве массивы коррелируют с высокоуровневым кодом?
        Ответить
    • Джава - она и есть джава... Ничего особенного для неё тут не вижу.
      Ну да, пожалуй players.get(i) действительно лучше вынести в переменную. Ну и что?
      Ответить
      • List<PlayerExt> players = playerManager.getPlayers(contestId);
        List<Player> response = new ArrayList<Player>;
        
            for (PlayerExt resp: players) {
                if (!resp.isQualified()) {
                    resp.setChipStack(BigDecimal.valueOf(-1));
                }
                // ОЛОЛО, ОЛОЛО, ВСЕ ВЫ БЫДЛО И ХУЙЛО!
                resp.setCustomerId(resp.getCustomerId());
                response.add(resp);
            }

        1. foreach
        2. Зачем массив, когда есть List?
        Ответить
        • > 1. foreach
          А куда девать setPosition(i + 1)?

          > 2. Зачем массив, когда есть List?
          См. http://govnokod.ru/13917#comment198991.

          > resp.setCustomerId(resp.getCustomerId()) ;
          Вот тут и суть. Эта строка вообще не нужна. Только лишний раз заргужает процессор. И до рефакторинга не очень сообразишь, что response[i].setCustomerId(players.get(i).getCustome rId()); надо вообще стереть.
          Ответить
          • 1. А на кой он там? Просто интересно.
            2. Ну так сделать toArray(), если уж так нужно. Не вижу ни малейшей причины без нужды возиться с массивами.
            Ответить
            • 1. Капитан Очевидность подсказывает, что это позиция игрока (величина временная и в базе данных не хранится) .
              2. Ну, никто, в общем-то не запрещает.
              Ответить
      • Когда вынесешь players.get(i) в переменную player и заменишь обращения response[i] обращениями к ней, вскрывается суть:
        List<PlayerExt> players = playerManager.getPlayers(contestId);
            Player[] response = new Player[players.size()];
        
            for (int i = min; i < max; i++) {
                Player player = players.get(i);
                if (!player.isQualified()) {
                    player.setChipStack(BigDecimal.valueOf(-1));
                }
                player.setPosition(i + 1);
                
                // Unnecessary sh*t
                // player.setCustomerId(player.getCustomerId());
                
                response[i] = player;
            }
        Ответить
    • показать все, что скрытоОТСОСУ У КАВКАЗЦА, ДАМ В ЖОПУ ТАДЖИКУ, ВЫЛИЖУ АНУС УЗБЕКУ vk.com/id29482‎
      Ответить
      • показать все, что скрыто
        ~Клуб знакомств для геев~
        Познакомлюсь с парнем
                     Сделаю миньет, подставлю попку парню кавказской внешности.
                     Прут наглые хуястые самцы, желательно с большим членом, так как  
                     очко сильно раздолблено. Могу принять сразу до 3-х парней.
                    Пишите [email protected]  /Тарас/
        Ответить
        • показать все, что скрыто
          ~Клуб знакомств для геев~
          Познакомлюсь с парнем
                       Сделаю миньет, подставлю попку парню кавказской внешности.
                       Прут наглые хуястые самцы, желательно с большим членом, так как  
                       очко сильно раздолблено. Могу принять сразу до 3-х парней.
                      Пишите [email protected]  /Тарас/
          Ответить
          • показать все, что скрыто
            ~Клуб знакомств для геев~
                    Познакомлюсь с парнем
                      Сделаю миньет, подставлю попку парню кавказской внешности.
                      Прут наглые хуястые самцы, желательно с большим членом, так как  
                      очко сильно раздолблено. Могу принять сразу до 3-х парней.
                        Пишите [email protected]  /Тарас/
            Ответить

    Добавить комментарий