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

    +81

    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
    public boolean hasNext() {
            if (vectorIndex  == vector.size()) 
                return false;
            return true;
        }
        
        public Object next() {
            try {
                return new Double(vector.getElement(vectorIndex));
            }
            catch(OutOfBoundsException e) {
                throw new RuntimeException(e);
            }
            finally {
                vectorIndex++ ;
            }
        }

    Такой вот итератор у начинающего жавера...

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

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

    • Прэлестно!
      Ответить
    • Это прямо какой-то фрактальный говнокод, тут прекрасно всё:

      * if (X) return false else return true вместо if (!X)
      * new Double(), хотя можно было просто вернуть элемент
      * RuntimeException вместо требуемого контрактом интерфейса NoSuchElementException
      * инкремент в finally
      * Object next(), хотя Iterator - это generic-интерфейс

      И, наконец, на закуску - непонятно, зачем изобретать велосипед, если Vector уже реализует Iterable и этот итератор просто (коряво) дублирует логику стандартного.
      Ответить
      • > вместо if (!X)
        return, не?
        Ответить
        • Да, конечно.

          Конкретно здесь - return vectorIndex != vector.size().

          Только надо вынести инкремент из finally, а то после первой попытки выйти за границы hasNext будет возвращать true.
          Ответить
      • >* new Double(), хотя можно было просто вернуть элемент
        Может getElement() возвращает строку, а это хитрожопый VectorDoubleIterator :)

        >Vector уже реализует Iterable
        Это, походу, велосипедный Vector, у стандартного ведь нет getElement().
        Ответить
        • Опа! А я и не знала, что у Double есть конструктор от строки. Всю жизнь писала Double.valueOf(), если нужен был именно объект Double.

          Пути Сана неисповедимы.

          > Это, походу, велосипедный Vector, у стандартного ведь нет getElement().

          Однако! Точно, у стандартного есть просто get и есть elementAt.

          Получается, этот самопальный вектор даже List не реализует? М-да...

          M-M-M-MONSTER SHITTYCODE!
          Ответить
          • Можно увеличенную версию авы с листиком с сегодняшней датой?
            Ответить
            • http://govnokod.ru/user/4722
              Его говнокоды. Движок говнокода в курсе.
              Ответить
              • > Движок говнокода в курсе.
                Движок говнокода не провести сиськами на аватарке.
                Ответить
                • Ну вы последнюю ловушку прогоните. Кончайте издеваться. Что он вам такого сделал?

                  На говнокоде обсуждают только код и сиськи.
                  Ответить
                  • Ну вы последнюю ловушку прогоните.

                    Ты хотел сказать давушку? LOL

                    Или ты имел ввиду "трапа"?
                    Ответить
                    • Да и какая разница. Код между прочим иногда не плохой постит. Если потребуется я приведу ещё больше ссылок и пруфов.
                      Ответить
                      • Ты так говоришь, будто мне не все равно девушка это или трап
                        Ответить
                        • вот смотри, если на тебя наехать, то ты сразу начинаешь питушиться. А семён просто молчит. похоже же на девушку? знает же, что её место у плиты и молчит. кузя себя также вёл. как-то к нам заглядывала настоящая ловушка. так вот она кричала как резанная, пока не ушла, поджав стоячий хвост между ног.
                          Ответить
                          • Ну и вообще, суди людей по делам, а не по словам. Мало ли там малолетний тролль добавляет окончания к словам.
                            Ответить
                          • Нет, это похоже на то, что оно не хочет развивать эту тему.
                            Ответить
                      • >приведу ещё больше ссылок и пруфов.
                        Уговорил. Приводи.
                        Ответить
          • > Опа! А я и не знала, что у Double есть конструктор от строки. Всю жизнь писала Double., если нужен был именно объект Double.

            у всех Number есть, и даже BigDecimal. а писать .valueOf() правильно, ибо, в отличие от new, дает прирост в производительности.
            или вы не на джаве прогите?
            Ответить
            • В шарпе у конструктора double нет параметров. Еще один предохранитель на вечном пистолете)
              Ответить
            • > в отличие от new, дает прирост в производительности
              Даблы тоже кешируются? Я думал только целые.
              Ответить
    • А зачем hasnext

      подозреваю, что должно быть так
      public boolean hasNext() {
              return vectorIndex != vector.size()
              }
          
      public Object next() {
      	if ( hasNext())
      		return vector.getElement(vectorIndex++);
      	return null;
          }
      Ответить
      • > return null;
        нет, это выход за границы, нужно кидать NoSuchElementException
        Ответить
      • null - вполне допустимое значение для элемента списка, поэтому использовать его как индикатор выхода за границы нельзя (да и спецификация интерфейса это запрещает).
        Ответить
        • Все. понял. Тогда правда только через исключение
          Ответить
    • А где remove()?
      Ответить
      • Итератор же...
        Ответить
        • http://docs.oracle.com/javase/7/docs/api/java/util/Iterator.html#remove()
          Ответить
          • А... с дотнетиком попутал.
            Там, вроде, MoveNext, Current и Reset нужны.
            Ответить
      • Он же опциональный, и на read-only итераторах только выбрасывает исключение.
        Ответить

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