На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 285 286 [287] 288 289 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    korvin, не во всех случаях свойства (как таковые) однозначно отображаются на внутренний стейт объекта (который является инкапсулированным). Свойства - это часть интерфейса. Глупо не использовать то, что использовать логично (с точки зрения семантики). Если, условно, у объекта есть длина, почему я должен формировать для этого запрос "Дай мне свою длину"?
      Цитата korvin @
      а ниче, что, свойство может вернуть ссылку на объект, поля которого могут измениться и наш исходный объект-"контейнер" не сможет этого отследить? так что "только для чтения" в делфи -- это миф. вот const в С++ может, да, тут уже обсуждали

      Это проблема взаимоотношений контейнера и этого объекта. Если контейнер не может засечь изменение своего атрибута, то это явно указание на плохой дизайн. Как пример, свойство Lines у TMemo - именно что объект (TStrings), список строк. Но изменения этого списка приводят к изменению собственно текста.
      И объект переноса данных обычно такого не делает, он должен быть простым, фактически это просто структура.
        Тем более, что свойства никоим образом не нарушают инкапсуляцию.
          Цитата korvin @
          эм... нет, я вообще-то об этом и говорил.... пятница, да? =))

          Вроде бы речь шла о том, что в java у интерфейсов свойств нет :lol:
          Цитата korvin @
          Цитата (Romkin @ Сегодня, 21:22)
          Потому что там тоже есть свойства. И в DTO обычно только они.

          где "там"? в джава-интерфейсах свойств нет, в Racket интерфейсах свойств нет. и что за DTO?

          Точно пятница
            Цитата Flex Ferrum @
            korvin, не во всех случаях свойства (как таковые) однозначно отображаются на внутренний стейт объекта (который является инкапсулированным). Свойства - это часть интерфейса. Глупо не использовать то, что использовать логично (с точки зрения семантики). Если, условно, у объекта есть длина, почему я должен формировать для этого запрос "Дай мне свою длину"?

            тебе религия запрещает называть метод length(), только getLength()? в джаве сейчас всё стилизуют под get-|set- имена =(
            а во многих ЯП даже скобочки не требуются =)

            Добавлено
            Цитата Flex Ferrum @
            Тем более, что свойства никоим образом не нарушают инкапсуляцию.

            самым прямым -- вместо описания поведения объекта описывают объект как тупой набор свойств.
              Собственно, есть проблема в Delphi, связанная с тем, что избегается создание мелких оторванных объектов: их же нужно потом отследить и уничтожить. Поэтому гораздо чаще такой объект делается вложенным в контейнер, который и отслеживает время его жизни, и дает к нему доступ через свои свойства.
              Вот это вот может приводить к говнокоду, ибо соблазнительно не делать декомпозицию, а написать сразу единый объект. Но понятно, что свойства в этом случае не при чем, собственно.
                Цитата Romkin @
                Это проблема взаимоотношений контейнера и этого объекта. Если контейнер не может засечь изменение своего атрибута, то это явно указание на плохой дизайн. Как пример, свойство Lines у TMemo - именно что объект (TStrings), список строк. Но изменения этого списка приводят к изменению собственно текста.

                покажешь (скопипастишь сюда) реализацию?

                Добавлено
                Цитата Romkin @
                И объект переноса данных обычно такого не делает, он должен быть простым, фактически это просто структура.

                ну я про объекты и ООП, а не про структуры
                  Цитата korvin @
                  тебе религия запрещает называть метод length(), только getLength()? в джаве сейчас всё стилизуют под get-|set- имена =(
                  а во многих ЯП даже скобочки не требуются =)

                  Длину может захотеться еще и устанавливать. А если доступ к атрибуту - то метод просто не нужен:
                  ExpandedWrap disabled
                    TFoo = class
                    strict private
                      FFoo: integer;
                    public
                      Foo: integer read FFoo;
                    end;

                  Зачем мне метод? Понадобится - введу, и это гарантированно не окажет влияния вне объекта.
                    Цитата korvin @
                    ебе религия запрещает называть метод length(), только getLength()?

                    Ты мне объясни - почему я должен писать .length() вместо просто .length? Тут есть что-то антирелигиозное? :D
                    Сообщение отредактировано: Flex Ferrum -
                      Цитата Romkin @
                      Цитата korvin @
                      эм... нет, я вообще-то об этом и говорил.... пятница, да? =))

                      Вроде бы речь шла о том, что в java у интерфейсов свойств нет :lol:

                      если нет свойств в интерфейсах, то логчно предположить, что их нет вообще. в любом случае в джаве нет свойств

                      Добавлено
                      Цитата Flex Ferrum @
                      Ты мне объясни - почему я должен писать .length() вместо просто .length? Тут есть что-то антирелигиозное? :D

                      юзай нормальные языки, пиши просто length. я так и делаю. кстати в делфе скобки для функций и процедур без аргументов тоже не нужны, да...

                      Добавлено
                      Цитата Romkin @
                      Длину может захотеться еще и устанавливать.

                      нет, не может. + есть более адекватное и информативное слово resize
                        Цитата korvin @
                        юзай нормальные языки, пиши просто length.

                        Да я юзаю нормальный йазыг, и пишу length вместо length(). :D
                          Цитата Romkin @
                          ExpandedWrap disabled
                            TFoo = class
                            strict private
                              FFoo: integer;
                            public
                              Foo: integer read FFoo;
                            end;

                          Зачем мне метод? Понадобится - введу, и это гарантированно не окажет влияния вне объекта.

                          таки чем это отличается от
                          ExpandedWrap disabled
                            TFoo = class
                            strict private
                              FFoo: integer;
                            public
                              Foo: integer { return FFoo; }
                            end;

                          ? зачем мне свойства(лишняя, ненужная сущность), если есть методы?
                            Цитата korvin @
                            покажешь (скопипастишь сюда) реализацию?

                            Млин, ну не вечером в пятницу? Идея там простая, там конкретный потомок абстрактного TStrings, которому передается владелец-мемо, и при изменении он его извещает.
                            Собственно, проще это показать на примере TCollection, там каждый элемент живет своей жизнью, для удаления объекта он просто уничтожается.
                            Цитата korvin @
                            ну я про объекты и ООП, а не про структуры

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

                                Да ну нафиг. Есть свойство длина - какую поставил такая и будет.

                                Цитата korvin @
                                если нет свойств в интерфейсах, то логчно предположить, что их нет вообще. в любом случае в джаве нет свойств

                                Ну ты явно сделал упор именно на интерфейсы, я уж подумал, может что поменялось.
                                Цитата korvin @
                                Цитата (Flex Ferrum @ Сегодня, 21:58)
                                Ты мне объясни - почему я должен писать .length() вместо просто .length? Тут есть что-то антирелигиозное?

                                юзай нормальные языки, пиши просто length. я так и делаю. кстати в делфе скобки для функций и процедур без аргументов тоже не нужны, да...

                                Тут скорее вопрос - а нафига я вообще должен писать геттер, если у меня поле? Свойство только для чтения - и все. Нафиг прокладки!
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 285 286 [287] 288 289 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.4011 ]   [ 14 queries used ]   [ Generated: 1.08.26, 10:27 GMT ]