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

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    if (resetPasswordAlert != nil)
    {
        resetPasswordAlert = nil, [resetPasswordAlert release];
    }
    [resetPasswordAlert release];
    resetPasswordAlert = [[ResetPasswordAlert alloc] init];

    Memory management по-белорусски...

    Запостил: ZaR, 04 Декабря 2012

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

    • Вот за что еще можно не любить обжективСи так это за то что можно без креша отправить сообщение нулевому указателю.
      Ответить
      • Ага, это несколько неочевидно, что отправляем неподдерживаемый селектор объекту - краш, отправляему нилу - все ок.
        Ответить
        • С другой стороны - это удобно тем, что не надо писать безумные цепочки проверок при обращении к вложенным свойствам
          Ответить
          • Да я же только за! Я к тому, что надо было довести дело до конца, не падать, когда, попутамши типы, отсылаешь селектор ненулевому объекту, который на него не отвечает.
            Или вот если нилу можно отправить что угодно, почему нельзя за границу массива выйти тогда, получив нил-объект?
            Ответить
            • Не обезьянничайте
              Ответить
            • Кстати, вы описали php
              Ответить
              • да ладно.
                нотисы и ворнинги вместо эксепшенов, что летят при _правильной_ конфиге прямо в браузер, кулхацкерам на радость.
                фатал вылетит - не поймаешь.
                event-driven без усилий только в 5.4, а так махровая процедурщина во всем.
                Ответить
                • Я php не знаю, я сужу по тому гк, что здесь проскакивает. И знайте... Долго описывать, почему я php даже не буду пытаться учить ;)
                  Ответить
                  • Что тогда тру в веб-программировании? Node.js? Django? Perl?
                    Ответить
                    • Скажем так, я не знаю, что труЪ в веб-программировании, ибо я никогда для веба ничего не писал. Но php мне не нравится как язык. Если бы мне приспичило что-то срочно закодить под веб для себя - я взял бы луа - он последовательнее, что ли, да и давно его хочу попробовать.
                      Ответить
                      • Луа может в веб?

                        Я бы взял node.js (очень удобно писать и клиентскую и серверную части на одном языке).

                        Можно и рельсы конечно, да и питон ничем не хуже.

                        Perl тоже по-своему хорош, правда боюсь, что придется лизать шрамы.

                        Ну а против PHP ничего не имею. Язык ущербный, но если потребуется воспользуюсь.
                        Ответить
                        • а по мне, scala и groovy - самое оно.
                          Ответить
                          • scala и groovy тоже могут в веб?

                            p.s. сейчас как раз учу скалу, очень жалею, что начал учить ее после хаскеля.
                            Ответить
                            • В веб может даже брейнфак, CGI пока никто не отменял.

                              P.S. Правда у брейнфака нет доступа к переменным окружения, поэтому он может выдавать только одну статическую страничку ;(
                              Ответить
                              • Ну я имею ввиду веб с блекджеком и шлюхами. Всмысле, чтобы приятно было.

                                Вот в node.js покопался - там все очень удобно, на рельсах думаю тоже все супер, а вот про lua в вебе не слышал.

                                Знаю, что для scala есть веб-фреймворк, но не смотрел.
                                Ответить
                                • > для scala есть веб-фреймворк
                                  Хороший
                                  http://www.playframework.org/documentation/2.0.4/Home

                                  Неплохой
                                  http://code.google.com/p/sweetscala/

                                  Злой
                                  http://liftweb.net/
                                  Ответить
                                • Блекджек и шлюхи для луа: http://lua-users.org/wiki/LuaAddonsArchive
                                  Ответить
                            • > scala и groovy тоже могут в веб?
                              Где вы спали 10 лет, пока жаба залезала на ваши сервера, плодила свои контроллеры и навязывала свои модели?
                              Ответить
                              • надо вспомнить, что жаба была рождена для интернета, а скала и груви компилируются в жабабайткод, и вопросы сами отпадут, обнажая конфуз
                                Ответить
                                • Жаба была рождена для телевизоров и микроволновых печей, но внезапно поднялась на интернете, причём изначально на клиентской стороне (богомерзкие апплеты). Только потом догадались, что жабо-интерфейсы настолько убоги и страшны, что лучше спрятать жабу на сервер и прикрыть непотребство обычным html.
                                  Ответить
                              • > Где вы спали 10 лет

                                Я всю жизнь в веб не совался, примерно неделю назад начал копаться, но дальше "hello world" на node.js не ушло.
                                Ответить
                      • Ну как, попробовал?
                        Ответить
                • > прямо в браузер
                  Я видел сайт (не отладочный, боевой в инторнете) на джанго с DEBUG = True, вот это на самом деле дружественный к пользователю вывод прямо в браузер. Хорошо, что они хитрые и прячут пароли и явки.
                  Ответить
          • Типа таких?
            if(this==NULL)

            Я стараюсь не допускать возможности подобніх ситуаций.
            Ответить
            • krypt, скорее всего, имел в виду вот такие:
              if (x && x->some && x->some->thing) {
                  foo(x->some->thing);
              }
              Ответить
              • Угу, достаточно проверить только последнее.
                Ответить
                • А если foo — это метод класса, то тогда вообще можно так:

                  [x.some.thing foo];
                  Ответить
          • Помнится, перенос некоторых алгоритмов с Objective-C на Яву превращался в русскую рулетку из-за такой нехорошей фичи nil.
            Ответить
            • Имхо, фича nil'а отличная, просто кое-кто на любит документацию читать ;)
              Ответить
    • показать все, что скрытобеларусь
      Ответить

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