Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   глобальные переменные зло? (http://www.flasher.ru/forum/showthread.php?t=164069)

Wolsh 13.08.2011 21:52

Вобщем, я так понял, никто не считает проблемой наличие никому не нужных данных или данных, доступных всем, кому они не нужны. "Разумно" - не то слово, которое приходит мне на ум, ну да ладно. "Лишь бы работало!" - так ведь? Я сбоку постою, не люблю демонстрации.

mikhailk 13.08.2011 22:01

Глобальная доступность константы Math.PI не очень смущает?

Bgg 13.08.2011 22:09

Цитата:

Сообщение от mikhailk (Сообщение 1021304)
И все равно я не понял, что я выигрываю от того, что протаскиваю по всему приложению ApplicationConfig.appMode и ApplicationConfig.socialNetwork, вместо того, чтобы работать с ними как с глобальными данными.

А зачем всему приложению знать в какой социальной сети оно находится? Имхо, должна знать только обертка(iFrame например) приложения, которая и сообщает только лишь необходимые данные о соц. сети. Например возможено ли создание своих альбомов с картинками или нет.

mikhailk 13.08.2011 22:12

Цитата:

А зачем всему приложению знать в какой социальной сети оно находится?
Настройка элементов интерфейса в основном.
Разные валюты, разные размеры фото, разный функционал.

Но все равно, мы приходим к единственному аргументу: "ApplicationConfig.socialNetwork - плохо, потому что общедоступно".
Других аргументов я что-то не вижу. :)

Но я его, собственно, и задумал как общедоступный, чтобы он всегда был под рукой.

Wolsh 13.08.2011 23:02

mikhailk, Вам тоже стоит вступить в клуб "я читаю название топика, прежде чем участвовать в споре". И все же отвечу - нет, не смущает меня константа Math.PI, зашитая в плеере еще со времен МХ наверное, когда об ООП в ActionScript только мечтали. Ее использование не создает сильной связности. Если я когда-нибудь допишу свою графическую библиотеку, использующую класс Math направо и налево, и Вы ее скачаете, Вам не придется бегать по всему интернету в поисках этого класса. Но я не смогу воспользоваться вашим классом, которому для работы кровь из носу нужен другой класс – ApplicationConfig, а не простые настройки инициализации.
Приведите аргумент какой-нибудь, а то я уже не понимаю с чем спорю. "ApplicationConfig.socialNetwork - хорошо, потому что общедоступно". Это всё? А есть какое-нибудь объяснение, почему "общедоступно – это хорошо"? Так сказать, по сути спора?

TanaTiX 13.08.2011 23:19

Цитата:

Разные валюты, разные размеры фото, разный функционал.
...разные приложения.

Мое мнение по теме. Если есть возможность (разумная) избавиться от глобальности - к этому нужно стремиться. Как уже было сказано выше, многое при этом решается еще на этапе проектирования. Как уже было сказано выше, публичные переменные доступны всем, бери - не хочу, делай что хочешь. Другое дело геттеры/сеттеры, даже скорее только геттеры - показать покажу, а испортить не дам. Это инкапсуляция, это ООП. Если же нужно что-то супер-глобальное, почему бы не использовать статику? Но это уже другая тема.

mikhailk 13.08.2011 23:20

Вобщем-то, спора никакого нет.

Я так сделал для собственного удобства. Наличие статического класса ApplicationConfig и публичной переменной socialNetwork позволяет мне при необходимости сделать быструю доводку интерфейса под конкретную сеть, в т.ч., в тех классах, которые изначально не планировались к настройке под сеть, т.е. параметры соцсети в них изначально не передаются, а значит надо их тащить туда дополнительно. Где-то через конструкторы, где-то через дополнительные методы.

Соответственно, мой аргумент прост как 5 копеек: удобство за счет незначительного послабления в части строгости ООП.

Добавлено через 3 минуты
Цитата:

Другое дело геттеры/сеттеры, даже скорее только геттеры - показать покажу, а испортить не дам
Я с клиентом работаю один.
Если бы над проектом работала группа программистов, я бы реализовал через сеттер/геттер. В момент загрузки клиента вычислялся бы параметр сети, который потом де-факто становился бы константой.

TanaTiX 13.08.2011 23:41

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

Wolsh 13.08.2011 23:42

Ладно, немного сбавим градусы.
Мне просто интересно, в практическом смысле, вот Вы создали скажем класс, способный выводить сообщение юзера с его фотографией, датой и прочим. И Вам не жалко сделать его инвалидом, хватающимся за некий левый ApplicationConfig с набором стилей? Ведь это не позволяет Вам использовать этот классик повторно в другом проекте as is. Как Вы с этим живете?

mikhailk 13.08.2011 23:51

Цитата:

И Вам не жалко сделать его инвалидом, хватающимся за некий левый ApplicationConfig с набором стилей? Ведь это не позволяет Вам использовать этот классик повторно в другом проекте as is. Как Вы с этим живете?
С замечанием абсолютно согласен. Эти классы не используются вне приложений для соцсетей, а все приложения для соцсетей имеют одинаковую структуру и обязательно содержат ApplicationConfig.


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

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