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

0

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

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

Запостил: guest guest, (Updated )

Комментарии (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), то это вполне нормальный код.
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8