1. ActionScript / Говнокод #17246

    −84

    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
    public function equals(newSprite:SpriteVO): Boolean
    {
    	return (newSprite.x == this.x &&
    	newSprite.y == this.y &&
    	newSprite.width == this.width &&
    	newSprite.height == this.height &&
    	newSprite.scaleX == this.scaleX &&
    	newSprite.scaleY == this.scaleY &&
    	newSprite.rotation == this.rotation &&
    	newSprite.assetId == this.assetId &&
    	newSprite.asset == this.asset &&
    	newSprite.track == this.track &&
    	newSprite.flipped == this.flipped)
    	
    }

    Почему-то у меня есть впечатление, что люди которые пытаются писать на языке используя приемы из другого языка, это в первую очередь люди, которые не поняли оригинальную задумку в другом языке.

    Запостил: wvxvw, 03 Декабря 2014

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

    • А почему hashCode() не реализовали?
      Ответить
      • А кто сказал, что не реализовали?
        Ответить
      • О, мне только что пришло в голову достойное наказание за плохую реализацию equals() - реализовать leibnizEquals().
        Ответить
    • и тут newSprite оказывается null = )
      Ответить
      • На самом деле там есть еще интересные моменты, x и y нельзя задать просто подставив числа, эти свойства получают значения врезультате перетаскивания объектов по экрану. Вобщем, шансов на то, что пользователь притащит один и тот же объект в точно ту же 1/20 пиксела - по моим наблюдениям еще такого не случалось.
        Единственный случай, когда эти числа могут совпадать у двух разных объектов, это если пользователь специально попросил сдублировать объект, но в таком случае как раз таки эти объекты нужно считать разными...

        Другой интересный момент, Флекс ведь тоже писали любители Явы, и поэтому какое-то подобие hashCode() там таки есть, потому что как жеж без этого... единственное, что называется оно обычно uuid и создается специальным менеджером по созданию UUID. И интерфейс соответствующий есть.
        Ответить
        • > как раз таки эти объекты нужно считать разными
          По identity они в любом случае разные. А по equality - таки одинаковые, т.к. обладают абсолютно одинаковыми свойствами.
          Ответить
          • Не, не одинаковыми, они ж на разной глубине находятся. Я, честно говоря не знаю, как человек, который это написал собирался это использовать, но, на сколько я могу понять, таким образом он собирался хранить историю изменений этих объектов. Но, я всю задумку так до конца и не понял.
            Я так подозреваю, что автор столкнулся (возможно) с проблемой, что объекты, которые только что считались одинаковыми, вдруг поменяли какое-то из свойств, и перестали быть одинаковыми, хотя их такими уже посчитали, и (возможно) не поняв причину такого поведения решил отказаться от задумки.

            Но автор еще жив и продолжает творить, так что возможно он просто сделал передышку перед следующей попыткой.
            Ответить

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