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

    Понятие не более широкое, просто это единственный доступный инструмент, вот и приходится велосипеды костылять. )

    Добавлено
    Цитата D_KEY @
    Во-вторых, в C++ есть namespace, нет необходимости в классе в данном случае.

    Ну, в Java тоже есть неймспейсы — пакеты. Проблема только в том, что это собственно просто неймспейсы, а не какие-нибудь модули/объектные файлы, имеющие, кроме различных определений, секции данных, кода, возможно, инициализации и финализации.
    Начиная с Java 9 там есть «модули», но по сути они являются просто более продвинутыми неймспейсами по сравнению с пакетами.
    Сообщение отредактировано: korvin -
      Цитата D_KEY @
      Ничего не понял. Ты не согласен с определением интерфейса, которое я привел? Или что?

      Оно, как бы это сказать, ну слишком теоритическое,

      Добавлено
      Цитата korvin @
      Начиная с Java 9 там есть «модули», но по сути они являются просто более продвинутыми неймспейсами по сравнению с пакетами.

      Я не видел что бы их кто-то использовал.

      Добавлено
      Цитата D_KEY @
      Ближе потому, что в таком языке класс - это более широкое понятие.

      В Яве интерфайс это класс без состояния, stateless.

      Добавлено
      Цитата korvin @
      Понятие не более широкое, просто это единственный доступный инструмент, вот и приходится велосипеды костылять. )

      В понятиях Явы это не велосипед, его придумывают те кто пишет
      класс с private конструктором, хорошо еще double checking не имплементируют ;)

      Добавлено
      Цитата applegame @
      Какое же все-таки говно эта Java. :facepalm:

      Говно не Java/С++/D а мозг людей не способных понять как оно работает, ;)
      и делающих такие выводы.
        Цитата D_KEY @
        Интерфейс - это не класс без мемберов, а абстрактный тип для описания поведения/контракта, которому должен соответствовать любой класс, который реализует этот самый интерфейс. При чем тут константы?
        Тогда в плюсах таки есть интерфейсы: абстрактные классы. Они делают именно то, что ты описал. Кроме того, как минимум в Java/C++/D есть возможность пихать константы в интерфейсы/абстрактные классы. А значит определение интерфейсов в этих языках не соответствует твоему идеализированному определению. Ты же скорее описал не интерфейс, а трейт из Rust.
        Цитата D_KEY @
        Ближе потому, что в таком языке класс - это более широкое понятие. И он вполне себе может быть использован в качестве пространства имен. А вот интерфейс имеет достаточно узкое предназначение. Не вижу смысла его тут использовать. Выглядит странно.
        А интерфейс-то почему не может быть использован в качестве неймспейса? Считай эти константы частью интерфейса, примерно как абстрактный класс в C++. Разница скорее философская: "патамушта мне кажется, что так правильнее".
        Из объективных аргументов только то, что такое "перечисление" не имеет собственного типа. Но частенько тебе нужен просто набор констант, а не перечисление и тут я не вижу никаких объективных преимуществ класса перед интерфейсом. Писать чуть больше, результат тот же.
        А для перечислений, еще раз повторю (почему-то вы все игнорируете эту конструкцию), в жабу ввели enum.
        Сообщение отредактировано: applegame -
          Цитата applegame @
          Тогда в плюсах таки есть интерфейсы: абстрактные классы. Они делают именно то, что ты описал.

          А еще могут много чего еще, что не имеет отношения к интерфейсам. Так что нет, в плюсах отдельной языковой конструкции для интерфейсов нет. Я не говорю, что она нужна.

          Цитата
          Кроме того, как минимум в Java/C++/D есть возможность пихать константы в интерфейсы/абстрактные классы. А значит определение интерфейсов в этих языках не соответствует твоему идеализированному определению.

          Хороший заход. Но на практике это значит, что просто нужно использовать эту дополнительную возможность разумно. Она вполне может помогать описать интерфейс. Тогда все ок.

          Цитата
          А интерфейс-то почему не может быть использован в качестве неймспейса?

          Потому, что это не имеет никакого отношения к понятию интерфейса.

          Цитата
          Считай эти константы частью интерфейса

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

              Класс в ООП можно рассматривать в качестве модуля. Интерфейс в этом качестве я бы рассматривать не стал. Ну и кроме того, я думаю, что интерфейс провоцирует делать implements ради констант.
                Цитата D_KEY @
                Особенно если речь о том, чтобы делать implements для "импорта" констант в том классе, где мы хотим эти константы юзать. Это очевидно переворачивает все с ног на голову.

                Это делают те кто не понимает, а в сети таких полно, Я за 15лет ни разу не делал,
                То что при прописании констант, интерфейс перестает быть тем чем ему дали с рождения все знают,
                Напиши свой язык, где никто ничего не переворачивает все с ног на голову ;)
                  Цитата sergioK @
                  Я не видел что бы их кто-то использовал.

                  Не удивительно.

                  Цитата sergioK @
                  В понятиях Явы это не велосипед

                  Ещё какой велосипед.
                    Цитата korvin @
                    Цитата sergioK @
                    Я не видел что бы их кто-то использовал.

                    Не удивительно.

                    Цитата sergioK @
                    В понятиях Явы это не велосипед

                    Ещё какой велосипед.

                    Покажи не велосипед
                      Цитата sergioK @
                      Покажи не велосипед

                      ExpandedWrap disabled
                        val resultCode = -1
                        Цитата korvin @
                        Цитата sergioK @
                        Покажи не велосипед

                        ExpandedWrap disabled
                          val resultCode = -1

                        А я бы предпочел что-то вроде:

                        ExpandedWrap disabled
                          const resultCode = -1


                        Добавлено
                        Хотя само наличие константы с таким названием смущает :)
                          Цитата D_KEY @
                          А я бы предпочел что-то вроде:

                          Это то же самое.

                          Цитата D_KEY @
                          Хотя само наличие константы с таким названием смущает

                          Ага, и хотя это просто абстрактный пример, нормальное имя могло бы сразу дать понять, что место ей не в каком-то безликом Constants, а в соответствующем классе/модуле. )
                            Цитата korvin @
                            Цитата D_KEY @
                            А я бы предпочел что-то вроде:

                            Это то же самое.

                            Ну я тут имел в виду, что оно ещё и во время компиляции гарантировано вычисляется :)
                              Цитата D_KEY @
                              Ну я тут имел в виду, что оно ещё и во время компиляции гарантировано вычисляется

                              В смысле? А если вместо ключевого слова const в языке используется val — то всё, приплыли?
                                Цитата korvin @
                                Цитата D_KEY @
                                Ну я тут имел в виду, что оно ещё и во время компиляции гарантировано вычисляется

                                В смысле? А если вместо ключевого слова const в языке используется val — то всё, приплыли?

                                Ну val по мне уже должно быть в рантайме. Даже если оно неизменяемое.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (4) 1 [2] 3 4  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0587 ]   [ 15 queries used ]   [ Generated: 4.02.23, 21:21 GMT ]