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

    Не, это я делал с большой пеной у рта. Когда доказывал D_KEY'ю, что утиная типизация для интерфейсов - плохо :lol:

    Ну тогда они вообще не нужны, ни в каком виде, при наличии множественного наследования и абстрактных классов? Просто мне казалось, что могло быть полезно наличие именно "утиных" интерфейсов, в чем-то аналогов концептов, но в рантайме.
      Цитата D_KEY @
      И как же живут бедные люди, пишущие системы на языках с динамической типизацией ?!

      Хороший, кстати, вопрос. Я бы повесился...
        Цитата MyNameIsIgor @
        Не, это я делал с большой пеной у рта.
        А, ну сорри. Забылось.
          Цитата MyNameIsIgor @
          Цитата D_KEY @
          И как же живут бедные люди, пишущие системы на языках с динамической типизацией ?!

          Хороший, кстати, вопрос. Я бы повесился...

          Если честно(на основе опыта использования питона), то основная проблема не в ошибках использования "неправильных" объектов(что-то не припомню, чтобы они вообще были), а в том, что тяжело работать с кодом библиотек, которые не очень хорошо документированы. Например, когда не очень понятно, объект какого класса вернула какая-нибудь функция.
            Цитата D_KEY @
            Т.е. ты видишь что-то плохое в коде:
            Нет. Я вижу большую разницу между тем и этим:
            ExpandedWrap disabled
              class MDIWindowContainer: IStack
              {
              ...


            Добавлено
            Romkin, та забудь ты об интерфейсах. У тебя есть реализация. Чего-то. Тебе этого понадобилось два. Разных, но однотипных (-типных - это каламбурчик). Совмещать?
              Цитата D_KEY @
              Ну тогда они вообще не нужны, ни в каком виде, при наличии множественного наследования и абстрактных классов?

              Вот я к такому выводу и прихожу.
              Цитата D_KEY @
              Просто мне казалось, что могло быть полезно наличие именно "утиных" интерфейсов, в чем-то аналогов концептов, но в рантайме.

              Угу, полезно. Если посмотреть с другой стороны, ты подобие дженериков в джавошарповском варианте предлагаешь :)
              Вопрос только остаётся открытым: имеем ли право делать такие интерфейсы, реализация которых не декларируется явно?
              Цитата D_KEY @
              Цитата MyNameIsIgor @
              Цитата D_KEY @
              Я уже говорил, что наличие абстрактных классов и множественного наследования в языке приводит к тому, что интерфейсы(в том виде, что есть в Java/C#/etc.) не востребованы. Но их этого не следует, что абстрактные классы и интерфейсы - одно и тоже.

              Впрочем как и не следует, что интерфейсы должны быть в виде концептов ;)

              Чего?

              :)
                Цитата MyNameIsIgor @
                Вопрос только остаётся открытым: имеем ли право делать такие интерфейсы, реализация которых не декларируется явно?

                А если разрешить явный каст? Или тоже плохо?
                  Пока продолжу. Есть логгер ILog, который реализован в TA и TB. Оба логируют (или логгируют, как правильно?) свои действия. Наследования простые! Предположим, реализация ILog, используемая TA и TB, пишет в файл. Вопрос: файлов логов дожно быть два или один?
                  Сообщение отредактировано: Qraizer -
                    Цитата Qraizer @
                    Есть логгер ILog, который реализован в TA и TB....
                    реализация ILog, используемая TA и TB

                    Не понял. Так TA и TB реализуют ILog или используют какую-то реализацию ILog?

                    Цитата
                    Наследования простые!

                    Кто от кого?
                      D_KEY:
                      ExpandedWrap disabled
                        class TA: ILog {/*...*/};
                        class TB: ILog {/*...*/};
                        Цитата D_KEY @
                        А если разрешить явный каст? Или тоже плохо?

                        Просто лишнее, имхо.
                        Меня смущает сам факт того, что автор класса не знает об интерфейсах, под видом которых класс будут использовать... Наверное, просто привык к языкам, где всё иначе.
                          D_KEY, хорошо, используют. Для опрелённости. Хотя с точки зрения моего вопроса это несущественно.
                            Qraizer, а кто пишет в файл(ы)?

                            Добавлено
                            Qraizer, не очень понимаю, в чем заключается вопрос. Как будет нужно, так и нужно сделать
                            :-?
                              Та они же и пишут. Может быть отчитываются о своих действиях, может что-то отладочное выводят, или же это журналы юзерной активности. Неважно.

                              Добавлено
                              Впрочем, уже достаточно. Раз не ответил сразу, значит что? Точно - вопрос не имеет однозначного ответа. Ответ зависит от конкретики. Легко можно предстваить себе, что контейнеры журналов отличаются, так же легко - что они совпадают.
                              Главный вопрос: почему "проблема" ромба называется проблемой, если там точь в точь эта же ситуация? Дизайнер системы решает, как дожно быть, а программист это реализует. Всё, нет "проблемы". Как программист будет решать - наследованием, агрегацией - та пофиг.

                              Добавлено
                              И вот теперь настала пора вспомнить про вооон тот вопрос о разделении/совмещении аттрибутов.

                              Добавлено
                              Впрочем, можно и не вспоминать, я на него ответил спустя пару постов.
                              Сообщение отредактировано: Qraizer -
                                имхо, недостаточно данных. оба класса разрабатывает один и тот же человек?

                                но вообще, я думаю, что файлы должны быть разными, иначе TB должен наследоваться от TA (или наоборот) или использовать объект TA внутри себя как основной логгер, записывая в файл лога через него.

                                или они должны оба наследоваться от одного базового TLog и писать через него (а если не через него, то в другой файл).

                                как-то так
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 307 308 [309] 310 311 ...  494 495


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