AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2013, 14:17   #161  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fed Посмотреть сообщение
А скажите - вы вот когда про префиксы говорите - вы совсем-совсем исключений не делаете?
Просто мне имена методов типа axInventTable.XYZparmNewField() очень режут глаз. Я уж скорее напишу что-то типа axInventTable.parmXYZNewField() чем префикс перед методом поставлю.
См. мое первое сообщение в этой ветке.

Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Методы, названия которых начинающиеся с "parm" - особый случай.
ГЫ!
Если хорошенько подумать, то префиксы - зло.
(Как и обратная венгерская запись)
За это сообщение автора поблагодарили: Maxim Gorbunov (2).
Старый 19.02.2013, 14:25   #162  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Если я не добавлю второй префикс "XYZ", то потом забуду, что это именно я добавил этот метод.
выделено мной.
префиксы хорошо работают для одного разработчика
префиксы ужасны, если несколько разработчиков в одном приложении ставят разные префиксы (например, разработчики из разных компаний)
Старый 19.02.2013, 14:31   #163  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
mazzy, я согласен с вами
Я всегда следую правилам того ведущего разработчика, который ведет проект. В проектах, которые я веду, префикс "z"
За это сообщение автора поблагодарили: mazzy (2).
Старый 19.02.2013, 15:20   #164  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от fed Посмотреть сообщение
А скажите - вы вот когда про префиксы говорите - вы совсем-совсем исключений не делаете?
Если есть требования накладываемые фреймфорком (тем же AIF к примеру) - естественно делаем

Цитата:
Если я не добавлю второй префикс "XYZ", то потом забуду, что это именно я добавил этот метод. Бывает, приходится через полгода возвращаться к забытым доработкам, а префиксы помогают быстро разобраться.
Это информация будет очень ценна для меня как для пользователя этого кода, при одном условии - если автор будет в свои модификации проставлять свой контактную информацию (телефон и домашний адрес). Так, на всякий случай

Цитата:
префиксы хорошо работают для одного разработчика
префиксы ужасны, если несколько разработчиков в одном приложении ставят разные префиксы (например, разработчики из разных компаний)
Вижу, ветка как обычно перешла в дискусию глухого со слепым
- "нам так удобно"
- "нет, так всем ужасно неудобно, и вам тоже"

Noted. Спасибо всем высказавшимся
__________________
-ТСЯ или -ТЬСЯ ?
Старый 19.02.2013, 17:19   #165  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,685 / 1189 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Vadik Посмотреть сообщение
Так как аддоны в моем случае по функциональности слабо пересекаются, я в каком-то смысле заранее представляю что я ищу
Вот в этом-то все и дело! Вся данная тема вокруг этого и построена. Именно поэтому Вы и не можете понять, о чем говорит mazzy

По Best Practices имя объекта - это идентификация модуля + идентификация функциональности

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

Однако зачастую имя аддона - это всего-лишь идентификация того, кто именно создал объект (ну, или кто "владелец" объекта). Сама по себе эта информация интереса не представляет. Именно поэтому и возникают вопросы. Совершенно лишняя информация, но без знания которой невозможно выполнить поиск объекта.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 21.02.2013, 13:28   #166  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Vadik Посмотреть сообщение
Я такой человек - мне чтобы понять надо увидеть. Покажи что и как у тебя сгруппировано. У меня - вот так (все компактно и аккукратно). Есть и объекты с кастомизациями из обоих аддонов плюс наши, к сожалению не смог сделать скриншот который бы показал все три группы не занимая весь экран
Страшновато выглядит, честно говоря

Вот тебе хорошо, ты знаешь, какой адд-он за что отвечает. А допустим приходит новый программист без опыта работы в твоём приложении, и надо ему найти, почему поле в таблице неправильно инициализируется. По-моему, ему гораздо удобнее будет, если все initFrom будут рядом сгруппированы, чем если придётся по списку методов скакать туда обратно, чтобы их все найти, нет? А учитывая, что таких таблиц, вероятно, много...

По поводу методов, которые в разных адд-онах могут называться одинаково - извини, тоже не убедительно. Если адд-оны затрагивают одну и ту же область стандартного приложения, такие методы в любом случае будут, используешь ты префиксы или нет. Стандартные методы вроде modifiedField(), insert(), update() и т.п. ты же всё равно не сможешь переименовать. А для добавленных методов мне кажутся удобнее суффиксы - просто привычка уже есть, когда по имени метода ты понимаешь, что именно он делает, а не с какими данными. То есть, SalesLine.modifiedFIeldDDC() мне лично понятнее, чем SalesLine.ddcModifiedField().
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
За это сообщение автора поблагодарили: Владимир Максимов (5).
Старый 21.02.2013, 13:33   #167  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от mazzy Посмотреть сообщение
Если хорошенько подумать, то префиксы - зло.
Полностью поддерживаю. Для меня это главный вывод данной темы
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.02.2013, 14:59   #168  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
А допустим приходит новый программист без опыта работы в твоём приложении, и надо ему найти, почему поле в таблице неправильно инициализируется. По-моему, ему гораздо удобнее будет, если все initFrom будут рядом сгруппированы, чем если придётся по списку методов скакать туда обратно, чтобы их все найти, нет? А учитывая, что таких таблиц, вероятно, много...
Есть поиск, есть перекрестные ссылки, есть проекты. Если все в порядке, то никаких проблем все просто и удобно.

Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
По поводу методов, которые в разных адд-онах могут называться одинаково - извини, тоже не убедительно. Если адд-оны затрагивают одну и ту же область стандартного приложения, такие методы в любом случае будут, используешь ты префиксы или нет. Стандартные методы вроде modifiedField(), insert(), update() и т.п. ты же всё равно не сможешь переименовать. А для добавленных методов мне кажутся удобнее суффиксы - просто привычка уже есть, когда по имени метода ты понимаешь, что именно он делает, а не с какими данными. То есть, SalesLine.modifiedFIeldDDC() мне лично понятнее, чем SalesLine.ddcModifiedField().
А их и не логично переименовывать, они на то и стандартные и могут содержать код разных решений. Для этого используются комментарии кода с префиксом решения и все отлично находится поиском по префиксу или префиксу и названию проекта. В то же время сразу видно какие методы к какому решению относятся и если стоит префикс который с нашим не пересекается, то туда можно даже не заглядывать. Симпл.

Мой вывод данной темы, некоторые не умеют готовить преффиксы
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 21.02.2013, 16:58   #169  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Link Посмотреть сообщение
Есть поиск, есть перекрестные ссылки, есть проекты. Если все в порядке, то никаких проблем все просто и удобно.
Поиск, перекрёстные ссылки и проекты есть и в том случае, если префикс не добавлять. А вот сортировкой в АОТ после использования префиксов пользоваться уже нельзя. Чувствуете разницу?

Цитата:
Сообщение от Link Посмотреть сообщение
В то же время сразу видно какие методы к какому решению относятся и если стоит префикс который с нашим не пересекается, то туда можно даже не заглядывать.
Для этого есть суффикс. А в 2012 ещё и модели.

Цитата:
Сообщение от Link Посмотреть сообщение
Мой вывод данной темы, некоторые не умеют готовить преффиксы
Так научите
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.02.2013, 17:01   #170  
LeonDerCom is offline
LeonDerCom
Участник
 
45 / 20 (1) +++
Регистрация: 08.10.2012
Цитата:
Сообщение от Link Посмотреть сообщение
В то же время сразу видно какие методы к какому решению относятся и если стоит префикс который с нашим не пересекается, то туда можно даже не заглядывать. Симпл.

Мой вывод данной темы, некоторые не умеют готовить преффиксы
То есть тоже самое по суффиксу не позволяет?
Зато когда куча аддонов и модов любителями префиксов, а таблицы с одинаковым названием - вот весело, пока вспомнишь какой префикс или его найдешь... А вот по названию таблицы, метода, класса - найти проще, потом выбирает нужную по суффиксу - все в шоколаде.
Старый 21.02.2013, 17:28   #171  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Поиск, перекрёстные ссылки и проекты есть и в том случае, если префикс не добавлять. А вот сортировкой в АОТ после использования префиксов пользоваться уже нельзя. Чувствуете разницу?
Не чувствую

Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Для этого есть суффикс. А в 2012 ещё и модели.
Почему не префиксы? А ну да, потому что сортировка нарушается )

Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Так научите
МС как раз курс делают по префиксами и суффиксам, даже сертификат отдельный будет
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 21.02.2013, 17:32   #172  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от LeonDerCom Посмотреть сообщение
Зато когда куча аддонов и модов любителями префиксов, а таблицы с одинаковым названием - вот весело, пока вспомнишь какой префикс или его найдешь...
У вас там рабочая ЕРП система или песочница?
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 21.02.2013, 18:28   #173  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,685 / 1189 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от Link Посмотреть сообщение
Не чувствую
Посмотрите скрин, который привел Vadik. Предположим, мне надо найти метод, который инициализирует данные. По Best Practices подобные методы называются initFromXXX.

Если префикса нет, то я встаю на первый метод класса и на клавиатуре начинаю набирать фразу "initFrom". Сразу вижу все методы, которые начинаются с этой фразы

Если префикс есть, то поиск по горячим клавишам - бесполезен. Я должен использовать Ctrl+F (это внутри методов ОДНОГО класса (!)). Никак не могу согласиться, что использование Ctrl+F (перекрестных ссылок, проектов) в данном случае - удобнее.

Цитата:
Сообщение от Link;
У вас там рабочая ЕРП система или песочница?
Со временем, любая учетная система превращается в песочницу Это грустно, но так оно и есть. Пока количество префиксов один..два с этим еще можно мириться. Но когда их общее количество переваливает за десяток, начинаются проблемы...

Вы исходите из предположения, что количество префиксов ограничено и Вы уже все их выучили. Но в общем случае оба допущения ошибочны.
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 21.02.2013, 19:34   #174  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Link Посмотреть сообщение
Не чувствую
Поясняю: разница в том, что использование префиксов не добавляет новых механизмов для поиска, но точно не позволяет использовать один из имевшихся старых.

На остальное отвечать, пожалуй, не буду, пока тема ещё не в курилке.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 21.02.2013, 21:34   #175  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Страшновато выглядит, честно говоря
У меня немало времени ушло сначала на то чтобы привыкнуть, а потом - понять
Цитата:
Вот тебе хорошо, ты знаешь, какой адд-он за что отвечает. А допустим приходит новый программист без опыта работы в твоём приложении, и надо ему найти, почему поле в таблице неправильно инициализируется. По-моему, ему гораздо удобнее будет, если все initFrom будут рядом сгруппированы, чем если придётся по списку методов скакать туда обратно, чтобы их все найти, нет?
Ну, для этого как бы перекрестные ссылки напрашиваются, а сколько там аддонов, методов и суффиксов-префиксов в принципе наверное не так уж и важно, не так ли ?
Цитата:
По поводу методов, которые в разных адд-онах могут называться одинаково - извини, тоже не убедительно
Ну я наверное еще раз свою позицию проясню и отпишусь уже от ветки. Не было у меня цели кого-либо в чем-либо убеждать или агитировать, тем более - за суффиксы или префиксы. Я уже говорил - что именно вы используете, особенно при in-house разработке, неважно, если для вас это работает. Меня другое умилило - это вот принципиальное "я художник, я так вижу", "мне удобно" и слепое следование best practice ("наименование объектов и методов должно быть стандартным") со стороны не последних (как я понимаю) представителей крутых (как я понимаю) российских партнеров
Я сейчас работаю на стороне клиента и для меня необходимость минимизировать (насколько это возможно) конфликты при слиянии нескольких решений разрабатываемых независимыми группами (Microsoft, вендоры и внутренняя команда разработчиков) - не перфекционизм и не прихоть, а суровая необходимость. Наши вендоры это к счастью понимают. Как они этого добиваются - отдельная песня, и суффиксы-префиксы здесь только то что на поверхности. Я вам больше скажу - один настолько продвинут, что модифицирует только минимум стандартных методов, там где нужно в середину метода вклиниться, все остальное - на event handler-ах, что ему затратнее зато апгрейд и слияние кода для меня как пользоватеоя как правило на автомате проходит. Кто-нибудь уже делал апгрейд с 2012 RTM на R2 ? Так вот - у меня он занял один человеко-день (9 часов, а не 24 - это так, на всякий случай). По той же причине он может мне промежуточные билды моделями хоть несколько раз в неделю присылать, а я - устанавливать. Понятно что этот подход работает для тиражируемых решений (одно решение - сто клиентов и основная маржа - с продаж и от партнеров), а для самописок - нет
Вот и все
__________________
-ТСЯ или -ТЬСЯ ?

Последний раз редактировалось Vadik; 21.02.2013 в 22:31. Причина: немного смягчил углы :)
Старый 22.02.2013, 13:35   #176  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Посмотрите скрин, который привел Vadik. Предположим, мне надо найти метод, который инициализирует данные. По Best Practices подобные методы называются initFromXXX.

Если префикса нет, то я встаю на первый метод класса и на клавиатуре начинаю набирать фразу "initFrom". Сразу вижу все методы, которые начинаются с этой фразы

Если префикс есть, то поиск по горячим клавишам - бесполезен. Я должен использовать Ctrl+F (это внутри методов ОДНОГО класса (!)). Никак не могу согласиться, что использование Ctrl+F (перекрестных ссылок, проектов) в данном случае - удобнее.
Я пытаюсь понять преимущества такого подхода, но увы. Во первых, использование поиска это быстро и удобно с моей точки зрения. Сразу видно не только названия методов но и параметры. А в данном примере еще и покажет использование XXX_initFrom в других методах класса. Во вторых обычно разработчик знает с каким функционалом связана задача и если это модуль партнеров, то как раз очень удобно увидеть все методы по префиксу модуля или еще лучше поиском по префиксу, в этом случае еще и коментарии из стандартных методов отобразятся. В случае если разработчик не знает, какой именно модуль его интересует - тогда перекрестные ссылки.

Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Пока количество префиксов один..два с этим еще можно мириться. Но когда их общее количество переваливает за десяток, начинаются проблемы...

Вы исходите из предположения, что количество префиксов ограничено и Вы уже все их выучили. Но в общем случае оба допущения ошибочны.
Если система сильно кастомизирована и незнакома разработчику, то имхо тут как раз будет куда нагляднее видеть все объекты по префиксу. И использование поиска и перекрестных ссылок как раз самое то.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 22.02.2013, 13:42   #177  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
Поясняю: разница в том, что использование префиксов не добавляет новых механизмов для поиска, но точно не позволяет использовать один из имевшихся старых.

На остальное отвечать, пожалуй, не буду, пока тема ещё не в курилке.
Спасибо, но все доводы в защиту суффиксов сводятся, только к личному удобству и предпочтению (сортировка vs группировка). Я вижу только одну возможную проблему - если в приложении используются оба подхода одновременно, вот тогда будет действительно неудобно.
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 22.02.2013, 15:31   #178  
Кирилл
Гость
 
n/a
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Посмотрите скрин, который привел Vadik. Предположим, мне надо найти метод, который инициализирует данные. По Best Practices подобные методы называются initFromXXX.

Если префикса нет, то я встаю на первый метод класса и на клавиатуре начинаю набирать фразу "initFrom". Сразу вижу все методы, которые начинаются с этой фразы
Да, префикс перед initFrom*, parm* и т.п. это перебор.
Но это не говорит о том, что любое применение префикса - зло.

Хотелось бы услышать в чем их зло для названий новых типов, таблиц, форм.

Допустим аддон (модуль) обозначаем Trololo.
Таблица TrololoBestTable, тогда initFrom будет выглядеть как initFromTrololoBestTable, все initFrom рядом и ссылка на модуль Trololo в наличии.

В AOT все объекты модуля Trololo рядом, все счастливы.

Может стоит изобличать лишь отдельные перегибы в использовании префиксов,
а не социалистическую систему в целом?
Старый 22.02.2013, 15:47   #179  
Кирилл
Гость
 
n/a
А вот гипотетический пример применения суффиксов:
ParametersInvent
ParametersCust
ParametersVend
ParametersSales
ParametersSmm
ParametersProd
ParametersBank
и т.д.

видите как удобно, все параметры в одном месте

вопрос к апологетам суффиксов - вас не напрягает, что разработчики стандарта применяли названия модулей в качестве префиксов, а не суффиксов?
может запрос написать в Microsoft, пусть поменяют
Старый 22.02.2013, 17:53   #180  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Кирилл, никто не против стандартной нотации, где сначала идет префикс "модуля" / "области". Так что ваши примеры - ничуть не против позиции за "суффиксы". Основная проблема, которую видят сторонники суффиксов - это когда префиксом является название компании / разработчика / решения (не модуля).
__________________
Ivanhoe as is..
Теги
как правильно, полезное, holywar

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Что лучше, много номенклатур или много конфигураций? axvrp DAX: Функционал 75 21.09.2010 16:13
Как лучше вносить изменения в чужой класс ski DAX: Программирование 13 18.08.2009 10:15
LedgerJournalTable как лучше сделать новую форму kitty DAX: Программирование 2 20.02.2008 12:36
Site в складской аналитике. Как лучше перевести? mazzy DAX: Прочие вопросы 73 07.01.2008 12:18
подскажите. как лучше сделать kitty DAX: Программирование 4 02.11.2007 11:14

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:53.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.