Субъективный Си / Говнокод #23482 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
...
([dictionary stringObjectForKey:@"scale"].length > 0) ? (_scale = [dictionary stringObjectForKey:@"scale"]) : (_scale = @"1");
...

Инициализация переменной с помощью тернарной операции.

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

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

  • лол, а stringObjectForKey не могло nil вернуть? нахера такая вербозность глупая?
    Ответить
  • Где в Objective C C?
    Больше на руби/CSS/говно похоже
    Ответить
    • Несмотря на необычный синтаксис ObjC обратно совместим с С, в отличие от крестов.

      Во всяком случае раньше был, как там у него с генериками и прочими новшествами С11 не знаю.
      Ответить
      • Что означает "обратно совместим"? Не манглит сишные имена? В крестах пишешь extern "C", вот и вся обратная совместимость. Оно практически во всех сишных хедерах за ифдефом сидит.
        Ответить
        • Возможно имелось в виду, что обж си - надмножество си. А кресты типа не совсем строго надмножество.
          Ответить
        • в си можно
          PITUH *pituh_pointer = malloc(sizeof(PITUH));
          А в крестах, емнип, надо кастить!
          Ответить
          • PITUH *pituh_pointer = new PITUH; //не вариант, не?

            В объектном си щас
            PITUH *pituh_pointer = malloc(sizeof(PITUH));
            тоже не напишеш без каста - манагеры заинтересованы максимально затрахать разработчика и требуют настраивать сейчас в компиляторе Варнинг ас Еррор
            Ответить
            • Бля, если ты без палки даже ворнинги не чинишь, то я тебя вообще не уважаю.
              Ответить
    • Обжектив си это надмножество си примерно как с++ (но кресты не совсем надмножество).
      Можно межать код на си и обжи. Собссно, программа под ios/macos начинается с обычного сишного main, внутри которого делается какой-нить NSApplication

      в древности objc реализовывался препроцессингом и преврашал код в си
      теперь это уже не так.

      Из за обратной совместимости с сями в обжс много мерзких лиреталов. Нельзя писать "foo" потому что это будет строка (char*), надо писать @"Foo" (NSString будет) итд.

      ну а сходства с рубями у них от общего предка smalltalk
      Ответить
      • Кстати, не все API яблок реализованы на ObjC/Cocoa. Есть огромный CoreFoundation и не всё в нем имеет ооп обертку в foundation, есть API KeyChain итд.
        Так что яблочинику надо было уметь и чистый си тоже.

        Вполне себе: CFTypeID SecKeychainGetTypeID(void);

        Правда теперь у всего есть свифтообертки (или у свифта хороший интероп с сями и он умеет их просто вызывать)_
        Ответить
      • > в древности objc реализовывался препроцессингом и преврашал код в си

        В C++ так же было: был кросскомпилятор Cfront, который код на C++ превращал в код на чистом Си. Наследник Cfront'а — коммерческий компилятор Comeau C++.

        А ещё в старых версиях LLVM (до версии 3.1) был сишный бекенд (-march=c), выдававший страшный код.
        Ответить
    • const auto pos = dictionary.find("scale");
      scale_ = (pos != dictionary.end() && !pos->second.empty()) ? pos->second : "1";
      Почему scale_ это строка, причём потенциально пустая, это отдельный вопрос.
      Ответить

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

Помни, guest, за тобой могут следить!

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


    8