1. Objective C / Говнокод #12034

    −102

    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
    - (int)someMethod
    {
        @try
        {
            // some code
            return 0;
        }
        @catch (NSException *e)
        {
            // some more code
            return -1;
        }
    
        // and some more code
        return -1;
    }

    Вот бывает же...

    Запостил: glook, 31 Октября 2012

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

    • Поясните в чем говно.
      Без контекста не понятно.
      Ответить
    • Сей великий Кодер просто перестраховаться решил. Третий return поставил, чтобы уж наверняка. Ибо береженого Бог бережет!!!
      Ответить
    • Подозреваю, что виноват компилятор. Небось сказал: не все ветви кода возвращают значение. Вот программист и пошел на поводу.
      Ответить
      • А нахрена тогда "// and some more code" после try-catch?
        Ответить
    • а что, в objc нету великолепного goto?
      http://ideone.com/uzlOXG
      c++:
      int foo(int x)
      {
          using std::cout;
          std::cout << "x = " << x << std::endl;
          try {
              if (x == 13) goto std;
              if (x != 0) throw x;
              std::cout << "normal" << std::endl;
              return 0;
          }
          catch (int & x) {
              std::cout << "catcha!" << std::endl;
              return -1;
          }
          
          std:cout << "reachable unreachable!" << std::endl;
          return -1;
      }
      Ответить
      • std:std::cout
        Ответить
      • Why so unreachable?
        Ответить
      • > std:cout

        Кстати, 2003 крестостудия в ответ на одно такое место выдаёт кучу невменяемых ошибок, в которых никак не упоминается то, что пропущено одно двоеточие.
        Ответить
        • хотя должна выдать всего лишь ошибку "я ниибу что такое cout в данной строке", ты это хотел сказать?
          Ответить
        • >2003
          скоро юбилей
          Ответить
          • Золотая студия
            Ответить
            • почему золотая

              Оловянная свадьба – десятилетие жизни в браке. Символ годовщины – олололово, которое в свою очередь является символом гибкости. Это говорит о том, что супруги «приросли» друг к другу и подстроились под особенности друг друга, они как бы прогибаются друг под друга. Значит, можно сказать, что их брак стал гибким. Также данная годовщина еще называется розовой свадьбой.
              Ответить
          • Какой юбилей. 2003 - это ж двухтысячные, это ж будущее, это Путин, стабильность, подъём России!
            Ответить
    • void f()
      {
      	_asm 
      	{
      		mov eax, label+1
      label:
      	}
      	return;
      	printf("Unreachable!\n");
      }
      Ответить
      • и что? выводит?
        Ответить
        • Visual Studio выкидывает все, что после ретурна, даже в самой отладочной версии, это уже в ассемблерном листинге видно. Так что не знаю, где это будет работать...
          Ответить
          • Visual Studio кладёт хуй на оптимизацию функции, даже в самой релизной версии, есть в ней есть асмоблоки.
            Ответить
            • А гцц кстати аккуратно интегрирует асмовставку в тело функции. Правда за счет этого синтаксис его асмовставок просто ужасен, и писать их не так просто как в вижуалке.
              Ответить
              • Мне нравится возможность записи ассемблера в gcc. Он близок к кросплатформенному и хорошо интегрируется в окружающую оптимизацию, если ты кончено правильно его используешь, тк там можно написать и не так френдли к оптимизации, если пользуешься фиксированными регистрами. Но правда когда пишешь правильно, то делать это несколько непривычно. Я считаю, им можно было бы пойти дальше и сделать интерсики.
                Ответить
                • > Он близок к кросплатформенному
                  Кроссплатформенный ассемблер это как невинная проститутка.
                  Ответить
                  • Это моя сексуальная фантазия, поэтому и то и то мне нравится.
                    Ответить
                  • Ну кроссплатформенный ассемблер это ж и есть Си!
                    Ответить
        • А, пардон, вот так:
          void f()
          {
          	_asm 
          	{
          		jmp label+2
          		label:
          	}
          	return;
          	printf("Unreachable!\n");
          }

          В 6.0 компилятор падает с INTERNAL ERROR, а 2008 - в настройках по умолчанию да... выдает Unreachable. =)
          Ответить
          • А кто сказал, что данный return скомпилится именно в джвухбайтовый ret?
            Ответить

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