На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (245) « Первая ... 217 218 [219] 220 221 ...  244 245  ( Перейти к последнему сообщению )  
> Есть ли будущее у DELPHI?
    Цитата D_KEY @
    А зачем там сначала идет nil, а потом освобождение?

    Затем, что если остальной код написан правильно (и предварительно проверяет указатель на nil перед обращением), то в процессе сложного удаления исключений произойти не должно.
    Но, опять же, если по программе разбросаны указатели на удаляемый объект, или случилась гонка по памяти, или нет проверок на nil, или руки из жопы растут - то FreeAndNil, увы, не поможет...

    Лично по мне, так наличие такого метода провоцирует кривой дизайн классов в целом...
      Цитата D_KEY @
      А зачем там сначала идет nil, а потом освобождение? Не говоря уже о том, что в занулении смысла особого нет, кроме отлавливания багов.

      Так ведь чтоб костыли зафиксить свои. У них же потом Free вызывается, а там судя по всему деструкторыдеинициализаторы будут вызываться. Малоли какой то объект неочистился, а так он уже зануленный в деструкторах базового класса будет.
        Цитата D_KEY @
        Не говоря уже о том, что в занулении смысла особого нет, кроме отлавливания багов.

        Да выходит что есть - т.к. в деструкторах базовых классов может вызываться виртуальный метод, который фактически вызовется на дочернем объекте для которого деструктор уже отработал.
        Коротче: в Делфи, в отличие от С++, полиморфизм работает в конструторах и деструкторах.
          Цитата Chow @
          Коротче: в Делфи, в отличие от С++, полиморфизм работает в конструторах и деструкторах.

          Им нужно было убрать деструкторы и подключить GC и получилась бы Java :crazy: Ну или на крайняк в finally все очищать, Java-прогеры любят finally :D
            Цитата Flex Ferrum @
            Затем, что если остальной код написан правильно (и предварительно проверяет указатель на nil перед обращением), то в процессе сложного удаления исключений произойти не должно.

            Если код написан правильно, то никакие FreeAndNil не нужны...

            Добавлено
            Цитата Chow @
            Да выходит что есть - т.к. в деструкторах базовых классов может вызываться виртуальный метод, который фактически вызовется на дочернем объекте для которого деструктор уже отработал.
            Коротче: в Делфи, в отличие от С++, полиморфизм работает в конструторах и деструкторах.

            Конструкторы и деструкторы в Delphi мы уже обсуждали в соответствующем холиваре :)

            Добавлено
            Цитата Wound @
            Java-прогеры любят finally :D

            У них теперь есть альтернатива.
              Цитата D_KEY @
              У них теперь есть альтернатива.

              Круто, но как то синтаксис хромает. Это теперь нужно в скобках перечислять все что должно автоматом закрыться? Так то ведь и запутатся можно имхо...
                Цитата D_KEY @
                Если код написан правильно, то никакие FreeAndNil не нужны

                Что значит "правильно"?
                Никогда не вызывать виртуальных методов из деструкторов?
                  Цитата Chow @
                  Никогда не вызывать виртуальных методов из деструкторов?

                  В том числе(раз возможна такая пьянка, что ты сам описал) :)
                  Обсуждали уже :lol:
                    Цитата Chow @
                    Никогда не вызывать виртуальных методов из деструкторов?

                    А зачем вызывать виртуальные методы из деструкторов? ИМХО, операция удаления должна быть прозрачной, без каких либо вызовов вирт. методов.

                    Цитата Chow @
                    Что значит "правильно"?

                    FreeAndNil смахивает на нехилый такой костыль, чтоб прикрывать ошибки своего дизайна. Поэтому если ты напишешь без ошибок, то есть правильно, тебе не понадобится FreeAndNil, ну как то так.
                      Цитата D_KEY @
                      Если код написан правильно, то никакие FreeAndNil не нужны...


                      Полностью согласен :D

                      Добавлено
                      Цитата Wound @
                      А зачем вызывать виртуальные методы из деструкторов? ИМХО, операция удаления должна быть прозрачной, без каких либо вызовов вирт. методов.


                      Кому должна? В Дельфи полиморфизм на уровне конструирования и уничтожения - нормальная практика, там нет никаких технических ограничений для этого, в отличие от с++
                        Цитата --Ins-- @
                        Кому должна? В Дельфи полиморфизм на уровне конструирования и уничтожения - нормальная практика, там нет никаких технических ограничений для этого, в отличие от с++

                        То что в делфи это нормальная практика еще не означает что это нормальная практика вообще. Если в деструкторах даже в делфийских городить огород и бизнес логику, то к добру это точно не приведет. Операция уничтожения как правило освобождает захваченые ресурсы, и если эту операцию переусложнить, то ты только себе хуже делаешь. Поэтому она все таки должна быть прозрачной.
                        Сообщение отредактировано: Wound -
                          Цитата --Ins-- @
                          там нет никаких технических ограничений для этого, в отличие от с++

                          В C++ нет технических ограничений, они логические: как вообще можно вызвать метод уже уничтоженного объекта?
                            Нет, только не снова :lool:
                              Цитата --Ins-- @
                              В Дельфи полиморфизм на уровне конструирования и уничтожения - нормальная практика

                              Создание и удаление объекта - дело исключительно этого объекта, а не потомков объекта этого класса.
                                Цитата D_KEY @
                                Нет, только не снова :lool:

                                Не, ну а что? :) Вот про какие технические ограничения он говорит? :scratch: Ты понимаешь?
                                Сообщение отредактировано: MyNameIsIgor -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (245) « Первая ... 217 218 [219] 220 221 ...  244 245


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,1911 ]   [ 15 queries used ]   [ Generated: 21.07.25, 09:19 GMT ]