Jawa / Говнокод #13945 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 d3m0n1c, (Updated )

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

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

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

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

        Конкретно здесь - 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!
        Ответить
            • > Движок говнокода в курсе.
              Движок говнокода не провести сиськами на аватарке.
              Ответить
              • Ну вы последнюю ловушку прогоните. Кончайте издеваться. Что он вам такого сделал?

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

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

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

          у всех Number есть, и даже BigDecimal. а писать .valueOf() правильно, ибо, в отличие от new, дает прирост в производительности.
          или вы не на джаве прогите?
          Ответить
  • А зачем hasnext

    подозреваю, что должно быть так
    public boolean hasNext() {
            return vectorIndex != vector.size()
            }
        
    public Object next() {
    	if ( hasNext())
    		return vector.getElement(vectorIndex++);
    	return null;
        }
    Ответить
    • null - вполне допустимое значение для элемента списка, поэтому использовать его как индикатор выхода за границы нельзя (да и спецификация интерфейса это запрещает).
      Ответить
      • Все. понял. Тогда правда только через исключение
        Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8