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

    +121.3

    1. 1
    2. 2
    3. 3
    public SaveOpenTemplate getThis() {
            return this;
        }

    Они это сделали!

    Запостил: guest, 01 Июля 2009

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

    • А в чём говнокодность? Применение этого кода представить себе не могу, но функция может приносить пользу:
      Вот этот код на С++ скомпилируйте:
      class TParent
      {
      public:
      	TParent* getThis() { return this; };
      	int b;
      };
      
      class TParent2
      {
      public:
      	int c;
      };
      
      class TChild: public TParent2, public TParent
      {
      public:
      	int a; 
      };
      
      ...
      
      TChild a;
      printf("%i, %i\n",&a,a.getThis());
      В данном случае возращаемый this будет отличатся от адресса экземпляра класса a. ;)
      Ответить
    • Андрей:
      Да, но в Java нету ни указателей, ни множественного наследования.

      Хотя может быть такое, что SaveOpenTemplate - родитель этого класса. В любом случае метод не имеет смысла.
      Ответить
    • Тогда, видимо, это действительно говнокод. Зря пытался оправдать...
      Ответить
    • BlackIceDaemon:
      [quote]В данном случае возращаемый this будет отличатся от адресса экземпляра класса a. ;)[/quote]

      Именно поэтому [quote]метод не имеет смысла.[/quote]
      :)
      Ответить
    • [quote=BlackIceDaemon]В данном случае возращаемый this будет отличатся от адресса экземпляра класса a. ;)
      Именно поэтому метод не имеет смысла.[/quote]Ну может смысл как раз был именно в этом, в получении this предка, а не всего объекта...
      К томуже без преобразования типов, да и просто красиво выглядит. Как будет выглядеть получение this предка на Java, без этого метода?
      Ответить
    • BlackIceDaemon:
      [quote]Ну может смысл как раз был именно в этом, в получении this предка, а не всего объекта...[/quote]

      Название метода должно однозначно определять его функциональность. Никаких "может быть". Что делает метод под названием "Вернуть Это"? Правильный ответ - хз:)
      Ответить
    • [quote=BlackIceDaemon]Что делает метод под названием "Вернуть Это"? Правильный ответ - хз:)[/quote]Ну название мы сейчас не обсуждаем(И так понятно, что не оно тру). Может автор просто привёл это, как пример, для пущей стёбности, поменял название метода.
      Дело в другом. Понять, для чего это могло использоватся. А это я описал выше. Другое дело, не понятно зачем это было нужно. Вот этого я уже не сильно понимаю...
      Ответить
    • Сдесь всё правильно, кроме названия...
      Ответить
    • Хм.. я когда-то такое делал, вот для чего: у нас есть иннер класс, и в нём надо получить объект внешнего класса для каких-то нужд. Гуглить было в облом, и написал такое вот.

      И ещё. Был когда-то какой-то фреймвёрк, в котором в каком-то теге надо было передавать имя бина и имя свойства. Причём имя свойства было required, а мне надо было передать сам бин, а не свойство. Поэтому getThis() оказался очень кстати: <sometag bean="myBean" property="this" ... />
      Ответить
      • Для этого существует следующая конструкция:
        ИмяВнешнегоКласса.this

        Стыдно должно быть! Неужели лень побеждает желание быть более профессиональным разработчиком? :)
        Ответить
    • Если работать через прокси-объекты (например Hibernate), то это вполне нормальный код.
      Ответить

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