1. C++ / Говнокод #1631

    +26.2

    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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    #define nil 0
    #define ERROR true
    #define OK true
    
    class CRenderer
    {
    	...
    	bool DrawTrinagle(CVector A, CVector B, CVector C, int color)
    	...
    };
    
    ...
    
    bool CRenderer::DrawTrinagle(CVector A, CVector B, CVector C, int color)
    {
    	if(this==nil)
    		return ERROR;
    
    	...
    
    	return OK;
    };

    Голова профессора Доуля...

    Запостил: Говногость, 19 Августа 2009

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

    • защита от дурака, точнее от вызова метода по нулевому указателю.
      class C
      {
      public:
      bool Method()
      {
      if (!this)
      return false;
      return true;
      }
      };

      void main()
      {
      C* c = 0;
      c->Method();
      };
      можно было бы ассерт еще вставить.
      имхо - не говнокод.
      Ответить
      • Ещё какой говнокод!

        Смотрим на объявления, имеем что nil == ERROR == OK. То есть, как мы отличим получилось у нас нарисовать треугольник или нет, если метод в обоих случаях возвращает одно и то же значение?
        Ответить
        • Видать программеру было пофиг отрисуется он или нет главное чтобы не выпадало error. А коль вызвал метод по нулевому указателю то сам виноват :))
          Ответить
        • дефайны не заметил :(
          фичу с подсветкой строк удалили чтоли?
          Ответить
    • Интересно,
      #define ERROR true
      #define OK true
      - это объявленно глобально на все модули?
      Ответить
    • У меня такое ощущение, что парень не мог найти ошибку в своей программе, где-же у него происходит вызов для нулевого указателя. Вот и проверяет this на 0. И что-бы не палится - скрыл ошибку объявлением ERROR, как true.
      Мол я своё дело сделал, а вы мучайтесь, как хотите.
      Ответить
    • Передавать CVector по значению тоже самоубийство, такая отрисовка только тормоза будет вызывать.
      Ответить
      • А может там pimpl торчит?

        Хотя, наверное, так даже хуже.
        Ответить
      • >такая отрисовка только тормоза будет вызывать.
        Видимо он надеялся, что современные 3D акселераторы исправят ситуацию...
        Ответить
    • Лично меня убило название DrawTri_na_gle :))
      Ответить

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