Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.08.2011, 01:30
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 21  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
expl, то, что Вы называете "протаскивать", обрисовывает ситуацию, когда архитектура заточена под глобальные переменные, и вдруг Вы решили эти глобальные переменные отменить. А проект уже написан, и Вы начинаете "протаскивать", не спорю. Но когда архитекрура строится изначально иерархически, вложенными модулями, этот процесс естественен и называется настройкой при инициализации. Когда каждому более глубоковложенному модулю передаются все те параметры, которые ему необходимы, чтобы настроить себя и свои составляющие, точно так же при вызове метода (передаче команды этому модулю) ему отдаются необходимые параметры
Кстати да, поспорить особо не с чем, иерархия рулит.
Но в промежуточных по иерархии классах может появляется код который только передает общие объекты к младшим.
Вот эти младшие ссылались бы на глобальный синглтон, например.

Тут все определяется уверенностью в том что, не потребуется 2-й логгер, например(их обычно глобальными делают, хотя даже логгер мне таки потребовался второй на текущем проекте)

На самом деле я не фанат глобальных вещей.
Потому что в один прекрасный момент младшему объекту потребуется передать параметр в зависимости от того, кому он принадлежит - всё! Глобальные точки доступа можно выкидывать и чесать репу.

Старый 14.08.2011, 09:27
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 22  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Очередная тема, которая приведет к холивару )

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

Старый 14.08.2011, 12:42
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 23  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
здесь под связанностью имеется в виду зависимость объекта не от непосредственного класса его содержащего или манипулирующего им, а опосредованная зависимость от классов уровня приложения.
То есть объект получается связанным, сросшимся с конкретным приложением, его конкр. структурой.
Вот это - не комильфо.

Старый 14.08.2011, 18:01
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 24  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Честно, ничего не понял из вышесказанного )
Цитата:
То есть объект получается связанным, сросшимся с конкретным приложением, его конкр. структурой.
Если свойства протянуть везде до нужных мест, эта структура так же будет целиком и полностью сросшаяся с конкретным приложением.

Старый 14.08.2011, 20:06
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 25  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
эта структура так же будет целиком и полностью сросшаяся с конкретным приложением
Ничего подобного. Класс будет получать настройки обычным способом, через сеттеры или параметры конструктора, и легко может быть использован сам по себе в другом проекте или другом контексте, как верно подметил expl. Если же класс содержит импорт класса-провайдера настроек, чтобы запросить у него данные, Вы не можете использовать его как есть, без этого другого класса. Это и называется сильной связностью – когда один класс требует для работы создание определенной среды, других жестко определенных вышестоящих классов (читай - подстройки всего приложения под себя). Вместо того, чтобы передать этому блочку текст, стиль, картинку и размеры, Вы импортите в него статический провайдер, хранящий настройки для всего и вся в приложении, и учите его "звонить в штаб". Соответственно ни в каком другом проекте этот класс работать не сможет, пока Вы не соберете для него этот Штаб и не настроите его так, чтобы он (штаб!) умел удовлетворять ваш капризный классик.
При "каскадной" инициализации Вы передаете экземпляру только то, что нужно конкретно ему (естественно, включая то, что нужно для инициализации его детей-составляющих, если они есть). Класс ни к чему не привязан. Он не требует наличия команды поддержки. В этом смысл "абстракции"/самодостаточности и "инкапсуляции". Да, он тоже требует параметров для настройки. Но, в отличие от штабиста, он требует ТОЛЬКО то, что ему нужно, и не требует ИСТОЧНИКА, а только сами данные. Поэтому неважно, в каком проекте он используется, ему надо только размеры, стиль, текст и картинку, но не структуру, отдающую эти данные. Вам не надо городить для него специальных точек доступа ВЫШЕ этого класса, выискивая в его коде, кого и за какие сиськи он будет дергать во время работы, вам надо передать нужные настройки в публичные точки доступа самого этого класса, и все. Это "универсальность" и "повторное использование". Почитайте уже ООП. Пора.
__________________
Reality.getBounds(this);

Старый 14.08.2011, 20:32
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 26  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Смотрю, флейм никак не остановится.
Давайте уж говорить конкретно - не только про выигрыш, но и про затраты.

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

Вариант с объектом-оберткой для всех параметров AppSettings (или как-то так), который мы закладываем на этапе проектирования и передаем всем сверху вниз через конструкторы, позволяет минимизировать затраты по доработке, но нарушает правило, что каждый получает только то, что должен, значит корректным признан быть так же не может.

ЗЫ. По поводу реиспользования кода - мне искренне хотелось бы посмотреть на реиспользование окна банковских операций по переводу валюты соцсети в игровую валюту в приложениях, не связанных с социальными сетями. Но это так, реплика из зала.

Старый 14.08.2011, 21:04
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 27  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
mikhailk, goodguy, вы просто не постигли Дао

Старый 14.08.2011, 21:08
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 28  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
mikhailk, goodguy, вы просто не постигли Дао
Я что-то такое подозревал.

Старый 14.08.2011, 21:37
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 29  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Аа, так вон оно в чем дело

Не, а по большому счету я согласен с Wolsh'ем, и сам использую иногда глобальные переменные только из лени ) В серьеных проектах всегда исползьзую подход описаный Волшем

Старый 15.08.2011, 01:09
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 30  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Мне кажется все зависит от проекта, ведь реализовать любой проект можно по разному, в зависимости от нужд и удобства.
Вот например, недавно делал приложение, показывающее некие списки, данные в которых постоянно меняются с сервера. Ну и более в приложении ничего небыло. Так вот сами списки - есть ни что иное как нарисованная кодом графика, и тут я использую класс глобальный переменных, - зачем? Ну захотелось мне сменить ширину блока, высоту, или просто цвет,( градиентный например ), с одной стороны - можно и в коде поменять, да фигня, а с другой стороны если graphics идет следующим образом типа moveTo, lineTo и т.д. раз 100 ( ну красивую я фигуру рисую - ок ) , то проще изначально поменять внутри этих мувов и лайнов, на глоб константу, и теперь в любой момент я получу нужный мне скин сменив только 2 строчки, не гробя весь код, с другой стороны эти переменные можно и в классах зашивать и там уже тоже менять по 2 строки да и все. Ну а если у нас несколько не взаимосвязанных классов, которые реализуют графику приложения ? В каждый класс лезть , искать и править по 2 строчки, когда проще открыть конфиг файл и в нем все сразу и поправить? Имхо - тема холиварная, из оперы - МВС или не МВС, каждый пишет как ему удобнее, главное чтобы это конкретно не было Быдлокодством, ну а чуть чуть можно
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 00:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 00:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.