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

    ExpandedWrap disabled
        public interface Constants {
           static final int  responseCode = -1;
      }


    счас умные архитекторы мне говорят что я дурак ;) и надо писать так,

    ExpandedWrap disabled
        public class Constants {
          public  static final int  responseCode = -1;
       
        private Constants () {  // чтобы вдруг кто то не создал обьект
         }


    Чего Я не понимаю ? Только не шлите в интернет там любителей, никогда не писавших софт,
    пруд пруди,
    Сообщение отредактировано: sergioK -
      sergioK, но они правы, ты --- дурак.

      Цитата sergioK @
      надо писать так

      И так писать не надо. У вас там в Израеле что, сборище дураков?
        Цитата korvin @
        sergioK, но они правы, ты --- дурак.

        Цитата sergioK @
        надо писать так

        И так писать не надо. У вас там в Израеле что, сборище дураков?

        Это нам из Индии архитекторов дали,
        Ну и как надо, расскажи умник ?


        P.S.
        Сначала на это ответь, потом я еще расскажу про этих талатнливых пиджинов ;)
        Сообщение отредактировано: sergioK -
          Цитата sergioK @
          Чего Я не понимаю ?

          Во-первых, у тебя там в одном случае интерфейс, в другов класс.
          Во-вторых, а в яве нет перечислений (enum)?
            Цитата Fester @
            Во-вторых, а в яве нет перечислений (enum)?
            Насколько я понял, они там настолько убогие, что уж лучше как Сирожа сделать:
            ExpandedWrap disabled
              enum Constants {
                responseCode(-1);
               
                private int value;
                Constants(int value) { this.value = value; }
              }
            Сообщение отредактировано: applegame -
              Цитата sergioK @
              счас умные архитекторы мне говорят что я дурак ;) и надо писать так,

              Архитектор ПО, тем более из Индии - дурак по определению. Архитектор вообще ПО не видит, ему плевать, хорошо работает ПО или нет. Главное для архитектора - соответствие паттернам.
                Цитата Fester @
                Цитата sergioK @
                Чего Я не понимаю ?

                Во-первых, у тебя там в одном случае интерфейс, в другов класс.

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

                Добавлено
                Цитата Fester @
                а в яве нет перечислений (enum)?

                Есть, иногда он лучше иногда нет только вопрос не о них,
                В яве из покон веков, для констант испоьзуют интерфэйсы,
                а вот зачем сlass с private ctor?

                Добавлено
                Цитата applegame @
                Насколько я понял, они там настолько убогие, что уж лучше как Сирожа сделать:
                ExpandedWrap disabled
                  enum Constants {
                    responseCode(-1);
                   
                    private int value;
                    Constants(int value) { this.value = value; }
                  }

                Убогие в сравнение чем ?
                Для чего тебе ксонструктор? что не так в

                ExpandedWrap disabled
                    interface Constants {
                     final static long timeout= 1800;  
                  }
                  Цитата sergioK @
                  Чего Я не понимаю ?

                  Что такое интерфейсы, например :) Явно нецелевое использование тут.
                  А как ты потом изаешь константы эти из интерфейса? Если делаешь implements такого интерфейса в нужном классе, то точно говнокод.
                  Сообщение отредактировано: D_KEY -
                    Цитата sergioK @
                    Чего Я не понимаю ?

                    http://www.javapractices.com/topic/TopicAction.do?Id=32
                      Цитата D_KEY @
                      Цитата sergioK @
                      Чего Я не понимаю ?

                      Что такое интерфейсы, например :) Явно нецелевое использование тут.
                      А как ты потом изаешь константы эти из интерфейса? Если делаешь implements такого интерфейса в нужном классе, то точно говнокод.

                      так и изживаю в любом месте программы, пишу имя интерсайса точка имя константы ,
                      зачем мне implements да и как контанта пишеться static в интерфэйсе, по другому нельзя,

                      Добавлено
                      Цитата korvin @

                      ну так я так и делаю , а вот зачем вместо интерфайса класс писать,
                      пока никто не ответил ,

                      Добавлено
                      Цитата D_KEY @
                      Что такое интерфейсы, например :) Явно нецелевое использование тут.

                      Итерфэйс если говорит в контексте C++ это класс без мемберов, компилятор не даст,
                      только статики, в яве не просто файлов как .h в С/С++, все должно быть в класах
                      или интерфэйсах, как ты по другому определишь константы? да и в С++ чем плохо группу
                      контант , вписать их в один класс, сделав его pv .
                      Сообщение отредактировано: sergioK -
                        Цитата sergioK @
                        а вот зачем вместо интерфайса класс писать,
                        пока никто не ответил

                        Там именно это и написано, но если тебе сложно было читать, попробуй тут: https://dzone.com/articles/reasons-why-the-...pattern-is-disc
                          Цитата sergioK @
                          Итерфэйс если говорит в контексте C++ это класс без мемберов

                          При чем тут C++? В C++ интерфейсов нет.

                          Интерфейс - это не класс без мемберов, а абстрактный тип для описания поведения/контракта, которому должен соответствовать любой класс, который реализует этот самый интерфейс. При чем тут константы?

                          Добавлено
                          Цитата sergioK @
                          все должно быть в класах
                          или интерфэйсах, как ты по другому определишь константы?

                          Ну раз в Java нет самостоятельных модулей, то в классе и определяем. закрываем конструктор, может быть даже делаем класс финальным. Всяко это ближе к нормальному коду, чем интерфейс.

                          Добавлено
                          Цитата sergioK @
                          да и в С++ чем плохо группу
                          контант , вписать их в один класс, сделав его pv .

                          Во-первых, для того, чтобы запретить инстанцирование объекта некоторого класса, не обязательно делать его абстрактным.
                          Во-вторых, в C++ есть namespace, нет необходимости в классе в данном случае.
                            Цитата D_KEY @
                            Интерфейс - это не класс без мемберов, а абстрактный тип для описания поведения/контракта, которому должен соответствовать любой класс, который реализует этот самый интерфейс. При чем тут константы?

                            то есть класс у кторого нет конструктора , ему нельзя сказать new
                            у интефейса нет состояния, тоесть мемберы, что в классе описывает состояние,
                            если не мемберы?
                              Цитата D_KEY @
                              Всяко это ближе к нормальному коду, чем интерфейс.
                              Почему ближе? Интерфейс как неймспейс, сойдёт для языка, в который не завезли нормальные перечисления. Завезли только адовое убожество, которое я привел выше.

                              Добавлено
                              Цитата korvin @
                              Цитата sergioK @
                              а вот зачем вместо интерфайса класс писать,
                              пока никто не ответил

                              Там именно это и написано, но если тебе сложно было читать, попробуй тут: https://dzone.com/articles/reasons-why-the-...pattern-is-disc

                              Какое же все-таки говно эта Java. :facepalm:
                              Сообщение отредактировано: applegame -
                                Цитата sergioK @
                                то есть класс у кторого нет конструктора , ему нельзя сказать new
                                у интефейса нет состояния, тоесть мемберы, что в классе описывает состояние,
                                если не мемберы?

                                Ничего не понял. Ты не согласен с определением интерфейса, которое я привел? Или что?

                                Добавлено
                                Цитата applegame @
                                Почему ближе? Интерфейс как неймспейс, сойдёт для языка, в который не завезли нормальные перечисления.

                                Ближе потому, что в таком языке класс - это более широкое понятие. И он вполне себе может быть использован в качестве пространства имен. А вот интерфейс имеет достаточно узкое предназначение. Не вижу смысла его тут использовать. Выглядит странно.
                                  Цитата 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 по мне уже должно быть в рантайме. Даже если оно неизменяемое.
                                                                Цитата D_KEY @
                                                                Ну val по мне уже должно быть в рантайме. Даже если оно неизменяемое.

                                                                С чего ты это взял? )
                                                                  Цитата korvin @
                                                                  Цитата D_KEY @
                                                                  Ну val по мне уже должно быть в рантайме. Даже если оно неизменяемое.

                                                                  С чего ты это взял? )

                                                                  Ну хз :) Мне кажется логичным наличие в языке механизма для работы со значениями во время компиляции и так же логичным кажется использовать ключевое слово const.
                                                                    Цитата D_KEY @
                                                                    Мне кажется логичным наличие в языке механизма для работы со значениями во время компиляции и так же логичным кажется использовать ключевое слово const.

                                                                    Это в тебе профдеформация говорит.
                                                                      Цитата korvin @
                                                                      Цитата D_KEY @
                                                                      Мне кажется логичным наличие в языке механизма для работы со значениями во время компиляции и так же логичным кажется использовать ключевое слово const.

                                                                      Это в тебе профдеформация говорит.

                                                                      Возможно. Но ты раскрой мысль-то про константы.
                                                                        Цитата D_KEY @
                                                                        Но ты раскрой мысль-то про константы.

                                                                        А что там раскрывать? Нет никакой разницы, как называется ключевое слово, хоть const, хоть val, хоть let, хоть def. Возможность работать со значениями во время компиляции от этого никак не зависит.
                                                                        Сообщение отредактировано: korvin -
                                                                          Цитата korvin @
                                                                          Нет никакой разницы, как называется ключевое слово, хоть const, хоть val, хоть let, хоть def. Возможность работать со значениями во время компиляции от этого никак не зависит.

                                                                          Суть не в названии, а в наличии возможности. Т.е. смогу ли я потом воспользоваться значением константы для условной компиляции, например? Или для определения размеров массива, хотя бы.
                                                                          Можешь погуглить про constexpr в C++ или про то, что в D есть.
                                                                            Цитата D_KEY @
                                                                            Суть не в названии, а в наличии возможности.

                                                                            Ну раз суть не в названии, то почему ты докопался до названия? )

                                                                            Цитата D_KEY @
                                                                            Т.е. смогу ли я потом воспользоваться значением константы для условной компиляции, например?

                                                                            Условная компиляция — зло. )

                                                                            Цитата D_KEY @
                                                                            Или для определения размеров массива, хотя бы.

                                                                            Сможешь.

                                                                            Цитата D_KEY @
                                                                            Можешь погуглить про constexpr в C++ или про то, что в D есть.

                                                                            Спасибо, я знаю про constexpr. При чём тут это, не совсем понятно, но можешь тоже погуглить про eval-when в Common Lisp, например. )

                                                                            Добавлено
                                                                            Или вот.
                                                                              Цитата korvin @
                                                                              Цитата D_KEY @
                                                                              Суть не в названии, а в наличии возможности.

                                                                              Ну раз суть не в названии, то почему ты докопался до названия? )

                                                                              Да я ж просто сказал, что предпочел бы const для констант :D

                                                                              Цитата
                                                                              Условная компиляция — зло. )

                                                                              В общем случае нет.

                                                                              Цитата
                                                                              Спасибо, я знаю про constexpr. При чём тут это, не совсем понятно

                                                                              Ну мой const это что-то близкое к constexpr.

                                                                              По поводу template haskell смотрел когда-то, что-то слабее даже плюсовых шаблонов показалось. Но я подзабыл уже.

                                                                              Добавлено
                                                                              В любом случае мы отделяем то, что происходит во время компиляции. О чем я и говорю.
                                                                                Цитата D_KEY @
                                                                                В общем случае нет.

                                                                                Да. В том числе и в общем случае. )

                                                                                Добавлено
                                                                                Цитата D_KEY @
                                                                                По поводу template haskell смотрел когда-то, что-то слабее даже плюсовых шаблонов показалось.

                                                                                Оно не совсем прямо соотносится с плюсовыми шаблонами, скорее ближе к макросам лиспа.
                                                                                  Цитата korvin @
                                                                                  Цитата D_KEY @
                                                                                  В общем случае нет.

                                                                                  Да. В том числе и в общем случае.

                                                                                  Аргументы-то есть?
                                                                                    Цитата korvin @
                                                                                    Цитата sergioK @
                                                                                    Покажи не велосипед

                                                                                    ExpandedWrap disabled
                                                                                      val resultCode = -1

                                                                                    не val а var и начиная с 10 версии, которая не LTS, с 11 пока мало где можно выходить в продакшен,
                                                                                    ждем 17 вроде до сентября ,

                                                                                    А ты Я давно заметил крутой спец в Яве, раньше стеснялся говорить, ;)
                                                                                      Цитата sergioK @
                                                                                      не val а var и начиная с 10 версии, которая не LTS, с 11 пока мало где можно выходить в продакшен,
                                                                                      ждем 17 вроде до сентября ,

                                                                                      Не Java, а любой нормальный язык, начиная с… 1970-х примерно.
                                                                                        Вроде не протухла же тема? :)

                                                                                        Я как поимевший дела с индусами могу сказать, что, думаю, что они это делают, что бы от самих себя защититься. Вообще, делать интерфейсы с константами нормальная практика с незапамятных времен. И нет в ней ничего плохого.

                                                                                        Другое дело, что люди не понимаю че делают (лично я ненавижу статический импорт) что бы не писать имя интерфейса могут сделать реализацию для интерфейса с константами. ХЗ зачем им это может понадобиться, лично я думаю, что они просто не в себе.

                                                                                        В общем, интерфейсы с константами в яве это нормально (передней край индусской науки к сожалению не аргумент).
                                                                                        Но для защиты от индусских дураков предлагается железобетонный способ.

                                                                                        Ну и с архитекторской т.з. это все выглядит немного криво, потому что они в диаграммах в основном сидят. А тут прямоугольничек, который вроде как и можно использовать определенным способом, но никогда не нужно. Людей с ОКР это раздражает, я знаю :)
                                                                                          Цитата Felan @
                                                                                          Вроде не протухла же тема? :)

                                                                                          Ой как раз в тему,
                                                                                          У меня command pattern и при инициализация я свои классы с ключами гружу в map ,
                                                                                          И все бы хорошо, но вдруг главный индус архитектор мне его убирает - аргументация
                                                                                          у них есть fresh developers и им тяжело использовать фабрику , обычный switch
                                                                                          лучше

                                                                                          ExpandedWrap disabled
                                                                                                 switch key {
                                                                                              
                                                                                                 case 1:
                                                                                                     return channel1Service.download(..)
                                                                                                case 2:
                                                                                                    return channel2Service.download(..)
                                                                                             
                                                                                                  и т,д
                                                                                            }


                                                                                          У было

                                                                                          ExpandedWrap disabled
                                                                                              IService service = factory.getService(int key )


                                                                                          И тут Я понимаю что по неволе становлюсь расистом ;) Эти индусы вообще реальные системы
                                                                                          писали ? И только схемы рисовали ? Если у них fresh developer и счас не умеет работать паттернами ,
                                                                                          так как он научиться тогда , мои джуны прекрасно с фабрикой работали.
                                                                                            Ну тут я с индусом соглашусь.

                                                                                            Насколько я понял из объедков кода, это не фабрика а фабричный метод. Хотя и он тут не к чему. Это должно называться Сервис локатор.

                                                                                            Вообще, архитектурные паттерны очень похожи друг на друга. И они не про рантайм. Они про статическую структуру. Про то как взаимодействуют классы, а не объекты. Поэтому и важно привильно их применять. По сути, фабричный метод вполне может заменить сервис локатор. В принципе и то и то будет работать. Даже можно сказать одинаково. Но когда один архитектор будет разговаривать с другим, они буду понимать определенные нюансы связанные с каждым паттерном. Потенциальные пути расширения функционала. Не все что можно навесить на одно, можно навесить на другое без потери "архитектуры" извиняюсь за тавтологию :).

                                                                                            А данном случае, зачем здесь фабричный метод? Его вывод не зависит от статики, от действительного типа объекта в рантайме. Он зависит только от параметра. Так что да. Простой кейс тут более уместен, ну в крайнем случае сервис локатор (я не знаю подробностей).

                                                                                            А индусы они в общем тоже разные бывают. Как и все остальные. Но специфика культурного кода присутствует конечно :)

                                                                                            ЗЫЖ Интересно посмотреть оригинал переписки... мало ли, че там они на ломаном басурманском накорябали, кто чего не понимает ;)
                                                                                              Да Java вообще индусский язычок, даже higher-Kinded types нету.
                                                                                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                                              0 пользователей:


                                                                                              Рейтинг@Mail.ru
                                                                                              [ Script execution time: 0,1082 ]   [ 16 queries used ]   [ Generated: 19.04.24, 22:07 GMT ]