На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++

Страницы: (117) « Первая ... 13 14 [15] 16 17 ...  116 117  ( Перейти к последнему сообщению )  
> Delphi vs C++ , Часть 1
    я не говорю о полезности union... я говорю о том, как просто это делается в с++ и через какое место это делалось в ОПаскале (не знаю как сейчас, потому и спрашиваю)
      Цитата Flex Ferrum @
      Если объявление переменной и контекст ее использования видны на одном экране

      Этого не всегда достаточно, чтобы быстро понять назначение переменной.

      Цитата archimed7592 @
      я не говорю о полезности union...

      :D К чему говорить о возможности языка, которая на практике используется в единичных случаях?
      Сообщение отредактировано: Dantes -
        Цитата Dantes @
        Этого не всегда достаточно, чтобы быстро понять назначение переменной.

        Понятно, что не всегда. Но часто этого вполне достаточно.
          Моя практика программирования говорит об обратном.
            Цитата wind
            Все эти вопросы могут возникнуть только если вы не знаете языка, у вас нет удобной ide, вы не располагаете временем. Всё, что понятно компилятору, должно быть понятно и программисту, использующему данный компилятор.

            Ты не понял вопроса.

            Цитата
            Во многих конторах следуют регламентам оформления кода. Так вот, во всех таких регламентах присутствует ограничение на длину строки (обычно, не более 80-100 знаков). Так же необходимо использовать понятные идентификаторы. При условии соблюдения этих двух пунктов возможно появление такой вот конструкции (если нету оператора вроде with):
            ExpandedWrap disabled
              SomeObject.GetSomeNestedObject()
                  .DoSomethingWithMyParameter(
                      SomeOtherObject.GetNestedObject().
                          GetValue(), ...);


            Это читать гораздо труднее, нежели запись с помощью with.

            А с with как?
            ExpandedWrap disabled
              with SomeObject do with GetSomeNestedObject() do with
                  DoSomethingWithMyParameter(
                      SomeOtherObject.GetNestedObject().
                          GetValue(), ...);
            ?

            Цитата
            Или вы хотите сказать, что в случае с
            ExpandedWrap disabled
              if (object) foo(bar);


            всем сишникам сразу станет понятно что и где?

            Станет понятно, что ни foo, ни bar не являются методами object - чего из конструкции с with совсем не понятно.


            Цитата Dantes
            Можно подумать, IDE не способна работать с with.

            Ты не понял. Пишешь wc. и получаешь список только имен из WINDOWCLASS. А если через with делать, то получишь список из всех идентификаторов, видимых в данном месте.

            Цитата
            Ну-ну. Только почему тогда имя выбирается покороче?

            Чем меньше область видимости, тем меньше длина имени. А несколькостраничный with - это вообще малочитаемо, имхо.

            Цитата
            Вообще-то C++ это тоже позволяет. Или ты хочешь сказать, что в C++ нестатические методы в конструкторе нельзя вызывать?

            ПРи чем тут конструктор?
            Цитата
            Предположим, есть какой-то класс SomeClass, свойство Items[Name: string] которого возвращает указатель на класс либо nil (нулевой указатель):

            Перевожу высказывание и код на C++;
            ExpandedWrap disabled
              class C
              {
                C* This() { return this; }
              }
              ..
              C* p = 0;
              if (p->This())
               ....
              Цитата Dantes @
              Моя практика программирования говорит об обратном.

              Ну, тут кому как. Если нравится писать километровые идентификаторы для локальных переменных - ну, на вкус и цвет... :)
                Цитата wind @
                Программист должен знать язык, на котором кодит.

                .....

                Цитата H.Iglesias II @
                никаких вопросов "относится foo или bar к object?" не возникает

                :lool: :lool: :lool:
                Вопросы см. выше, их не я задавал.

                Еще раз:
                ExpandedWrap disabled
                  function bar;
                  ....
                   
                  with obj do
                    foo(bar());

                Даже если ты суперзнаешь Делфи, не видя определение класса, чьим экземпляром является obj - сможешь сказать, вызовется ли функция bar?
                  Цитата Dantes @
                  К чему говорить о возможности языка, которая на практике используется в единичных случаях

                  Смотря в какой практике. Зайди к эмбеддерам - увидишь, там объединения, битовые поля и препроцессор используются на каждом шагу.
                    Цитата Hryak @
                    Даже если ты суперзнаешь Делфи, не видя определение класса, чьим экземпляром является obj - сможешь сказать, вызовется ли функция bar?

                    А как же Find declaration?
                    На другие вопросы отвечу позже.
                      Цитата Smike @
                      А как же Find declaration?

                      Ну да. Вот и скачешь по файлам :)
                        Цитата Smike @
                        А как же Find declaration?

                        Find declaration - прекрасная штука, спору нет. Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно? И так становимся рабами инструментов, зачем же усугублять...
                          Цитата Hryak @
                          Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно? И так становимся рабами инструментов, зачем же усугублять...

                          Интересный подход. Для того, чтобы забить гвоздь, вам нужен молоток. Без молотка у вас ничего не получится. Если вы используете молоток для забивания гвоздя, то становитесь рабом молотка. Дальше продолжать?

                          Или, может быть, кто-нить сейчас скажет, что в c++ по .h/.cpp/.def файлам скакать не нужно?
                            Цитата wind @
                            Или, может быть, кто-нить сейчас скажет, что в c++ по .h/.cpp/.def файлам скакать не нужно?

                            Нужно, нужно, успокойся.
                            Читаем внимательно:
                            Цитата
                            Но зачем искусственно вызывать необходимость пользоваться этим там, где это не нужно?

                            Я про то, что при использовании with скакать нужно больше.

                            И код получится менее стабильным.
                            Написали класс с некими методами (включая foo), потом юзаем этот класс:

                            ExpandedWrap disabled
                              // где-то:
                              function bar;
                              ....
                               
                              with obj do
                                foo(bar());
                            Через годик решаем класс дополнить методом bar() - и всё тихо-тихо-незаметно ломается.
                            Нахрена этот геморр ?
                              Цитата wind @
                              Интересный подход. Для того, чтобы забить гвоздь, вам нужен молоток. Без молотка у вас ничего не получится. Если вы используете молоток для забивания гвоздя, то становитесь рабом молотка. Дальше продолжать?

                              Не совсем корректная аналогия. Правильнее было бы так - "для того, чтобы забить гвоздь, мне обязательно нужен пневмомолоток на аккумуляторах, ибо другим работать не умею". Вот это - привязка к инструменту. Основной инструмент разработчика - это, в первую очередь, компилятор. IDE упрощает определенное количество операций, но писать текст программы рассчитывая на то, что он будет просматриваться/редактироваться в рамках конкретной IDE - ИМХО, ошибка.
                                Цитата Hryak @
                                Через годик решаем класс дополнить методом bar() - и всё тихо-тихо-незаметно ломается.
                                Нахрена этот геморр ?

                                Надуманный пример. Никогда не сталкивался с трудностями при использовании with.

                                Взял наугад первый попавшийся чужой код с with. Мне все понятно ;)
                                ExpandedWrap disabled
                                      with RGB do
                                      begin
                                        if R > 0 then
                                          R := Power(R, Gamma)
                                        else
                                          R := 0;
                                        if G > 0 then
                                          G := Power(G, Gamma)
                                        else
                                          G := 0;
                                        if B > 0 then
                                          B := Power(B, Gamma)
                                        else
                                          B := 0;
                                      end;

                                Даже если бы я не знал структуры RGB, то легко догадаться, что это именно R, G и B.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (117) « Первая ... 13 14 [15] 16 17 ...  116 117
                                Закрыто archimed7592 11-03-2008: Лимит страниц. Продолжаем Delphi vs C++



                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0548 ]   [ 15 queries used ]   [ Generated: 15.08.25, 04:06 GMT ]