powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Singleton vs Static members
54 сообщений из 54, показаны все 3 страниц
Singleton vs Static members
    #34122157
Knoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немножко глупый такой вопрос. Есть такой паттерн - Singleton, предназначенный для создания "глобального" объекта в единственном экземпляре. Чем такой подход принципиально лучше использования класса, содержащего только статические поля и методы?
В обоих случаях имеем нужную "глобальность", а необходимые действия, связанные с инициализацией "глобального" класса (при втором подходе) можно выполнить в статическом конструкторе (в случае использования C#) или в блоке static (в случае Java). Так с ходу единственный минус второго подхода - нельзя передать параметры для инициализации (статический конструктор не может принимать параметры), хотя это тоже решаемо.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34123364
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KnooЧем такой подход принципиально лучше использования класса, содержащего только статические поля и методы?

Почему лучше? Иногда нужны и статики(у всего своё назначение),
Синглтон - это объект, с ним работают как с объектом, можно его наследовать от кого-то, ...
А зачем в ООП объекты - это уже другой вопрос...
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34123840
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Будто "целиком статический" класс нельзя унаследовать от кого-то...

Основной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34124241
Knoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторОсновной плюс именно синглтона в том, что создаваемый глобальный объект не обязан быть объектом именно запрошенного класса. Скажем, делаем объект ServerConnection, который в зависимости от настроек возвращает LocalConnection, TCPConnection, HTTPConnection.... Кроме того, в getInstance относительно легко извратиться, если потребуется непредусмотренный ранее хак, скажем переключение с сервера на сервер и как следствие существование в течение некоторого времени двух экземпляров ServerConnection.
Осознал, спасибо :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127244
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и синглтон можно передавать куда-нить (и они могут быть полиморфны), а статический класс - намного сложнее.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127829
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoну и синглтон можно передавать куда-нить, а статический класс - намного сложнее.
Ага, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34127996
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну например, есть у тебя пять плагинов (синглтоны) - разные классы, отнаследованные от одного и ты их хочешь хранить в одном массиве или всех их конфигурировать единообразно или ещё чего... Точно также, если есть некий метод, работающий с плагином (или коннектом к бд) - ему можно будет передавать синглтон в качестве параметра, причём этот метод даже не будет знать о его синглтонской природе (которая может быть сокрыта). Класс со статическими членами просто контейнер кучи данных, а синглтон кроме этого ещё является и объектом. Смотря что важнее - куча данных или объект, их содержащий. Класс со статическими членами - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34128345
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34128519
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129073
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн


+1

Хотя такая точка зрения к сожалению встречается среди руководства
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129226
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встречается много разных.... мыслей. Скажем, один из моих знакомых жаловался на начальника, который в административном порядке запретил использовать наследование форм.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34129660
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsСтатические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить?
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34130659
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsАга, передать куда-нибудь и без того всем доступный объект очень нужная и очень сложная задача :)да вроде он необязательно доступен всем.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34130743
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспомнил про статические классы =)
Кто знает в каких случаях их грамотно применять??
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34131113
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERВспомнил про статические классы =)
Кто знает в каких случаях их грамотно применять??
Ой это не про джаву раздел :(
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34131241
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну почему, темка как раз для языков типа жабы.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34137509
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs maXmoну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн, поэтому рассуждения о его плюсах/минусах мне, н-р, читать достаточно забавно.
Не скажу что дикость, но иногда от них бывают очень неприятные последствия...
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34137587
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не сдерживай себя, расскажи
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34138239
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, интересно про последствия..
использование static final вроде единственная альтернатива константам(в java),
немного смущает возможность такой конструкции :
Код: plaintext
1.
2.
3.
String s="1";
Integer a= 2 ;
 int  b=a.parseInt(s);//хотя лучше так, без примитивных типов всё было бы печально
Проблемы чаще всего возникают, когда "одного экземпляра поля" не хватает на все объекты класса, т е использование не по назначению
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34138442
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Timmно иногда от них бывают очень неприятные последствия...
А уж какие неприятные последствия иногда бывают, например, от ООП.....
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34140281
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERнемного смущает возможность такой конструкциивс говорит: Static member cannot be accessed with an instance reference; qualify it with a type name instead
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146275
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
NotGonnaGetUs
maXmo
ну например, ... (Дцен поскипан) - самый прозрачный способ реализации кучи данных в языках, не поддерживающих неооп.

Статические члены класса (поля, методы) - это чаще всего дикость и бэд дизайн


Ага, просто ходячий анекдот.

maXmo
ну ладно, как ты решить такую вещь: есть у меня хэш-таблица с настройками, где мне её разместить?


Задачи "есть хэш-таблица" - нет. Это уже решение.

Хотя о чём тут говорить, если у вас на форуме по c# умудряются формы через статик поля связывать...

Где размещать какие-либо данные зависит от того, что это за данные и кем они будут обслуживаться.

Посмотри, н-р, как работа с настройками сделана в Log4Net.

Gluk (Kazan)
+1

Хотя такая точка зрения к сожалению встречается среди руководства

Любой код (со статиками или без) решает вполне конкретную задачу.
Из двух решений лучше то, в котором возникает меньше возможных связей.
Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146386
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs
Любой код (со статиками или без) решает вполне конкретную задачу.
Из двух решений лучше то, в котором возникает меньше возможных связей.
Публичные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей. Если количество классов велико, необходимость исследовать потенциальные связи приводит к существенному усложнению внесения изменений, либо к большому количеству багов созданных исправлением багов. Поэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны) должно быть самой крайней мерой, когда никакие другие решения (aop, ioc, просто редизайн) уже не возможны.

Прежде чем поучать, стоит разобраться с определениями. Слово static в C++ (Java в настоящий момент меня не волнует) ОЧЕНЬ многофункциональное. Какой из его смыслов Вы предлагаете предать анафеме ???
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146395
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В частности, очень интересно как вы определите методы класса, которые можно будет использовать в Win API как Callback или экспортировать в DLL к примеру ?
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146594
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsПосмотри, н-р, как работа с настройками сделана в Log4Net.мог бы и в двух словах объяснить, а хеш-таблица или дом-фрагмент - разницы никакой нет.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146694
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsАга, просто ходячий анекдот.
Очень похоже на то.

NotGonnaGetUsЛюбой код (со статиками или без) решает вполне конкретную задачу.
Из двух решений лучше то, в котором возникает меньше возможных связей.
Ложно. Лучше то, в котором возникает меньше реальных (а не возможных) связей, причем не тупо по количеству, а с учетом весового коэффициента "вредности" различных типов связей.

NotGonnaGetUsПубличные или частично открытые статик поля (а так же синглтоны) добавляют огромное количество потенциальных связей.
Любая неприватная декларация добавляет огромное количество потенциальных связей, статики здесь ничем не выделяются.

NotGonnaGetUsЕсли количество классов велико, необходимость исследовать потенциальные связи
Означает кривую технологию разработки, впрочем прискорбно типичную для явы.

NotGonnaGetUsПоэтому введение глобальных переменных (коими по сути являются статик члены классов и синглтоны)
Вот и притянули знакомое пугало.

Что ж, давайте рассмотрим простенькую задачу: реализовать функцию, возвращающую текущую дату. В каком именно классе, в каком именно формате итп - на Ваше усмотрение. Будет интересно узнать оптимальный дизайн для решения этой задачи.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146811
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerЧто ж, давайте рассмотрим простенькую задачу: реализовать функцию, возвращающую текущую дату. В каком именно классе, в каком именно формате итп - на Ваше усмотрение. Будет интересно узнать оптимальный дизайн для решения этой задачи.в джаваскрипте - new Date();
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146893
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsПосмотри, н-р, как работа с настройками сделана в Log4Net.да... и что делать в таком случае: значит, при загрузке мы сконфигурировали все объекты методом Configure, а когда юзер поменял настройки, все эти объекты, значиццо, благополучно переконфигурировались, ага.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34146914
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сидят ли эти объекты в списках, приватных членах, локальных переменных методов - все как один встали и переконфигурировались.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147122
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Прежде чем поучать, стоит разобраться с определениями. Слово static в C++ (Java в настоящий момент меня не волнует) ОЧЕНЬ многофункциональное. Какой из его смыслов Вы предлагаете предать анафеме ???

Ну так и разберитесь. Начните с вопроса который написал 12 ноября Knoo. С первых двух его строчек.

Gluk (Kazan)
В частности, очень интересно как вы определите методы класса, которые можно будет использовать в Win API как Callback или экспортировать в DLL к примеру ?

О, хотите войнушку? Тогда говорю: Win API дерьмо.

А создание callback методов прямо ложится на паттерн комманда, который можно реализовать через анонимные классы в java или делегаты в c#.

Каким место нужно прыгать, чтобы это заработало в с++ под win api "меня в настоящий момент не интересует" (с).

softwarer
Ложно. Лучше то, в котором возникает меньше реальных (а не возможных) связей, причем не тупо по количеству, а с учетом весового коэффициента "вредности" различных типов связей.

"Любое утверждение ложно, даже это" (с).

Если работа идёт в команде "профессионалов", если процесс ревью кода налажен на 5+, если каждый в команде думает как один, то можно писать на чём угодно, как угодно, с любым количеством изуверств и извращений и надеждой, что через полгода этот код не вернётся на исправления или дополнения.

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

Кроме того, срез "реальных" связей отражает только решение в текущий момент времени. Меня же больше интересует и волнует, как это решение будет эволюционировать.

Думаю, каждый из нас останется при своём мнении :)

softwarer
Любая неприватная декларация добавляет огромное количество потенциальных связей, статики здесь ничем не выделяются.

Выделяются.
Вместо отслеживанием life-cycle инстанса класса, нужно отслеживать life-cycle _всех_ инстансов класса, т.к. все они имеют доступ к статик полю.
В отличии от не статических доступ к статическим членам практически невозможно контролировать.
Сюда же добавляются проблемы с многопоточностью.

Жалко нет времени приводить примеры.


softwarer
Означает кривую технологию разработки, впрочем прискорбно типичную для явы.

Ерунду порите. Прискорбную для вас.

Большое количество классов далеко не всегда является отражением проблем с головой, в отличии от ситуации, когда в несколько gui-форм распихан весь код приложения.


softwarer
Что ж, давайте рассмотрим простенькую задачу: реализовать функцию, возвращающую текущую дату. В каком именно классе, в каком именно формате итп - на Ваше усмотрение. Будет интересно узнать оптимальный дизайн для решения этой задачи.

Меня вполне устраивает стандартная реализация.
Статик метод возвращающий количество мс от базовой даты и скрывающий доступ к таймеру
+ класс для представления этих мс в удобном виде (форматирование, перевод в другие тайм зоны, етс).

Статик метод в данном случае является упрощением класса-синглтона представляющего уникальный в системе объект таймер и содержащий один метод.

Если "простенькую" задачу рассматривать не в вакууме, то могут появиться другие варианты решения.


Вам, наверное, скучно, но предлагаю вместо того, чтобы выискивать варианты, где без "глобальности" не обойтись, посмотреть на то море случаев, где её используют за зря.

Мне, н-р, кажется не интересным повторять бесконечное число раз банальности вроде "любая х..я в ряде случаев не х..я".



maxmo
Сидят ли эти объекты в списках, приватных членах, локальных переменных методов - все как один встали и переконфигурировались.

Уже посмотрел на log4net? :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147164
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs Gluk (Kazan)
В частности, очень интересно как вы определите методы класса, которые можно будет использовать в Win API как Callback или экспортировать в DLL к примеру ?

О, хотите войнушку? Тогда говорю: Win API дерьмо.


Нафига мне с вами воевать ? Мне за это денег не платят
А платят мне именно за работу с тем, что вы назвали столь неблагозвучным образом

NotGonnaGetUs
А создание callback методов прямо ложится на паттерн комманда, который можно реализовать через анонимные классы в java или делегаты в c#.


Осталось рассказать об этом разработчикам Windows
Очень любопытно будет посмотреть на вашу реализацию аснхронного I/O под Win32
с использованием паттерна Команда

Вы несколько категоричны и поспешны в суждениях. Не все в мире занимаются тем же чем и вы
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147206
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsО, хотите войнушку? Тогда говорю: Win API дерьмо.


Да мне вощем пофигу, мне за работу с ним платят деньги

NotGonnaGetUs
А создание callback методов прямо ложится на паттерн комманда, который можно реализовать через анонимные классы в java или делегаты в c#.


Осталось объяснить это разработчиком Windows. Мне было бы интересно взглянуть на Вашу реализацию асинхронного I/O под Win32 с использованием паттерна Команда :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147211
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry за двойной пост, прокся дурку валяет
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147298
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo softwarerБудет интересно узнать оптимальный дизайн для решения этой задачи.в джаваскрипте - new Date();
Оптимальный дизайн в джаваскрипте так существенно отличается от оптимального дизайна где-нибудь еще?

Итак, как и ожидалось, предложено решение через анонимный конструктор. Не затруднит ли Вас назвать его преимущества относительно Date.getCurrentDate()? Недостатки я назвать готов, собственно это общие недостатки анонимных конструкторов (надо признать, изрядно глупой концепции).
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147324
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)
Да мне вощем пофигу, мне за работу с ним платят деньги


Правильно, вам пофигу.
Вы работаете с г* и используете аналогичные приёмы, потому что подругому нельзя.
Но от этого г* не становится не г*.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147422
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs Gluk (Kazan)
Да мне вощем пофигу, мне за работу с ним платят деньги


Правильно, вам пофигу.
Вы работаете с г* и используете аналогичные приёмы, потому что подругому нельзя.
Но от этого г* не становится не г*.

Хотите обидеть ? Напрасно, я не обижаюсь
С своей колокольни считаю говном то чем занимаетесь Вы :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147453
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsУже посмотрел на log4net? :)посмотрел, дочитал до processing all top-level elements - дальше читать стало неинтересно.
softwarerОптимальный дизайн в джаваскрипте так существенно отличается от оптимального дизайна где-нибудь еще?ээ... что?
softwarerНе затруднит ли Вас назвать его преимущества относительно Date.getCurrentDate()?ну как... хочешь объект - создай его (конструктором). Как ещё можно объект создать? Просто в джаваскрипте нет статических методов, так что сам доктор прописал юзать конструктор.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147472
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Хотите обидеть ? Напрасно, я не обижаюсь
С своей колокольни считаю говном то чем занимаетесь Вы :)

Зачем же вы так? Я добрый и миролюбивый человек. К тому же влюблённый.

А почему вы считаете написание кода, с которым можно работать без мата, гавном? :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147494
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, если в джаваскрипте опуститься до идиспача, что создание объекта - это вызов конструктора (метод особого типа) на объекте, представляющем класс (как в SmallTalke).
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147499
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs Gluk (Kazan)Хотите обидеть ? Напрасно, я не обижаюсь
С своей колокольни считаю говном то чем занимаетесь Вы :)

Зачем же вы так? Я добрый и миролюбивый человек. К тому же влюблённый.

А почему вы считаете написание кода, с которым можно работать без мата, гавном? :)

Ok, реальный пример. Недавно понадобилось из Java (из под Oracle) вызвать select на несколько сокетов с таймаутом. Не объясните как сие реализовать ?
Вариант с циклическим опросом сокетов на готовность не предлагать
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147501
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsА почему вы считаете написание кода, с которым можно работать без мата, гавном? :)можно, но, боюсь, что тяжеловато.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147511
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147586
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsЕсли работа идёт в команде "профессионалов", если процесс ревью кода налажен на 5+, ....
То все это замечательно, но к хорошему или плохому дизайну отношения не имеет. Команда профессионалов может быть и сможет вытянуть плохо спроектированное решение, но дизайн от того хорошим не станет. Равно и наоборот.

NotGonnaGetUsто можно писать на чём угодно, как угодно, с любым количеством изуверств и извращений и надеждой, что через полгода этот код не вернётся на исправления или дополнения.
Это и есть обоснование отказа от статиков, я правильно понимаю?

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

На свете есть ровно один безопасный инструмент: инструмент, примененный вовремя и по назначению. Все прочие - опасны. А если человек, взявший инструмент, начинает песню про "учиться мне лень, возьму серебряную пулю и сходу все будет замечательно" - так и преступно опасны.

NotGonnaGetUsКроме того, срез "реальных" связей отражает только решение в текущий момент времени. Меня же больше интересует и волнует, как это решение будет эволюционировать.
Само по себе верно, но если посмотреть, на что Вы этим отвечаете, смысл получается следующим: "я приму кривое решение сегодня, думая о светлом будущем завтра". Такой смысл мне решительно не нравится, хотя увы, также типичен для молодых разработчиков.

NotGonnaGetUsВместо отслеживанием life-cycle инстанса класса, нужно отслеживать life-cycle _всех_ инстансов класса, т.к. все они имеют доступ к статик полю.
Еще раз: ни хрена не нужно отслеживать. Нужно программировать надежно, так, чтобы потребность отслеживать не возникала. Криво программировать, а потом отслеживать - забавная технология, но непрактичная.

NotGonnaGetUsВ отличии от не статических доступ к статическим членам практически невозможно контролировать.
Очень удачная фраза, прямо к моему предыдущему абзацу. Доступ не нужно "контролировать". Нужно писать классы, которые не ломаются.

NotGonnaGetUsСюда же добавляются проблемы с многопоточностью.
И какие же? На примере вышеупомянутой задачи возврата текущей даты.

NotGonnaGetUs softwarer
Означает кривую технологию разработки, впрочем прискорбно типичную для явы.

Ерунду порите. Прискорбную для вас.

Большое количество классов далеко не всегда является отражением проблем с головой, в отличии от ситуации, когда в несколько gui-форм распихан весь код приложения.
Итого, считаем:

1. Передергивание. Вы игнорируете сказанное и пытаетесь представить дело так, словно я возражаю против большого количества классов.

2. Приписывание оппоненту собственных фантазий с ожидаемым переходом на их опровержение.

3. Попытка увода беседы в сторону, никак не относящуюся к теме обсуждения.

Прискорбно для меня, говорите? Согласен. Я бы предпочел корректных собеседников.

NotGonnaGetUsМеня вполне устраивает стандартная реализация.
Статик метод .... Статик метод в данном случае является упрощением класса-синглтона ....
OK. То есть в оптимальном дизайне для подобного класса задач мы сходимся. Пойдем дальше, попробуем нащупать границу. По памяти, был у меня как раз на Яве примерно следующий код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
/* Обертка для хранимых процедур */
 public   class  SP {

  ....

   public   static  Params execute (String procName, Params params) {
     return   new  SP (procName, params).execute();
  }
}

Ваше мнение об оптимальном дизайне для этой задачи?

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

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

NotGonnaGetUsМне, н-р, кажется не интересным повторять бесконечное число раз банальности вроде "любая х..я в ряде случаев не х..я".
Меня удивляет использованная Вами логика рассуждений "толпа идиотов, использующая нечто, делает это нечто х..й". И особенно удивляет сочетание этой логики с точкой зрения "Java не х...я", которую Вы высказывали в некоторых предыдущих беседах.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147634
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo softwarerОптимальный дизайн в джаваскрипте так существенно отличается от оптимального дизайна где-нибудь еще?ээ... что?
Я спросил "каков оптимальный дизайн". Вы ответили: "В джаваскрипте - такой". Меня удивила мысль о том, что оптимальный дизайн зависит от языка 1 , и я уточнил, правильно ли я понял, что в джаваскрипте так, а в других языках оптимум будет иным.

1 По моим представлениям, оптимальный дизайн от языка не зависит. Другой вопрос, что ограничения языка могут не позволить реализовать этот оптимальный дизайн и потребовать тех или иных вывертов. Скажем, отсутствие наследуемых конструкторов заставляет либо тупо копировать код, либо использовать вместо конструкторов фабричные методы.

maXmoну как... хочешь объект - создай его (конструктором). Как ещё можно объект создать? Просто в джаваскрипте нет статических методов,
Ну дык с этого стоило начинать :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147718
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer, а каковы преимущества статического метода перед конструктором?
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147730
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmosoftwarer, а каковы преимущества статического метода перед конструктором?

паттерн Прототип к примеру
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147890
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerТо все это замечательно, но к хорошему или плохому дизайну отношения не имеет.
Имеет прямое отношение.

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

Использование статиков для реализации глобального доступа к данным - точно такая же ситуация.

softwarer
Это и есть обоснование отказа от статиков, я правильно понимаю?

Чтобы не было проблем с пониманием:
Использование стататик членов классов для открытия доступа к каким-то данным и операциям с ними в том случае, когда без этого можно обойтись - бэд дизайн и тупость.

Обоснование - элементарное следование правилу сокрытия деталей реализации.

softwarer
Несколько секунд представлял себе Вас, делающего немудреную операцию удаления аппендицита с использованием безопасного пластикового ножа из набора для пикников.

Ну хоть развлеклись немного:)

softwarerНа свете есть ровно один безопасный инструмент: инструмент, примененный вовремя и по назначению.
Нет.

Если бы код писался один раз и на всегда - было бы всё равно _на чём_ его писать.
Если бы код не передавался "по наследству" - было бы всё равно _как_ он писался

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

softwarer
NotGonnaGetUsКроме того, срез "реальных" связей отражает только решение в текущий момент времени. Меня же больше интересует и волнует, как это решение будет эволюционировать.
Само по себе верно, но если посмотреть, на что Вы этим отвечаете, смысл получается следующим: "я приму кривое решение сегодня, думая о светлом будущем завтра". Такой смысл мне решительно не нравится, хотя увы, также типичен для молодых разработчиков.

Ну, молодые разработчики - это известная ваша песня.
Причём тут "кривое решение сегодня" мне решительно не понятно.
Кривым решнием будет вынести данные на всеобщее обозрение, и в светлом будущем осваивать тонкости русского мата, пытаясь охаратеризовать принятое ранее кем-то умным решенее.

softwarer
Еще раз: ни хрена не нужно отслеживать. Нужно программировать надежно, так, чтобы потребность отслеживать не возникала.

О, да. Зарядил, так зарядил.
"Нужно" чтобы был мир во всём мире. И что с того? Как этого добится?

Программировать надёжно - это значит фигачить куда попало статики?

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


softwarer
NotGonnaGetUsВ отличии от не статических доступ к статическим членам практически невозможно контролировать.
Очень удачная фраза, прямо к моему предыдущему абзацу. Доступ не нужно "контролировать". Нужно писать классы, которые не ломаются.

Про "нужно" я уже написал.

"Надёжные" классы зависящие от статик членов, придётся все до одного изменить, если окажется, что статик член нуждается в модификации. Фактически абстракции более высокого уровня оказываются завязаны на низкоуровневые утилитные классы/методы. Связывание, связывание и связывание вот к чему это приводит. И заодно к нарушение ОSP.
На свалке место таким "надёжным" классам.


softwarer
NotGonnaGetUsСюда же добавляются проблемы с многопоточностью.
И какие же? На примере вышеупомянутой задачи возврата текущей даты.

Кто там, что писал про передёргивания?

softwarer
NotGonnaGetUs
Если количество классов велико, необходимость исследовать потенциальные связи
softwarer
Означает кривую технологию разработки, впрочем прискорбно типичную для явы.

Ерунду порите. Прискорбную для вас.

Большое количество классов далеко не всегда является отражением проблем с головой, в отличии от ситуации, когда в несколько gui-форм распихан весь код приложения.

Итого, читаем:

вы говорите, что большое количество классов означет кривую технологию разработки и называете её типичной для java.

Что вы на самом деле хотели сказать, мне не ведомо. Я не телепат. А потому последующие ваши замечетельные выводы позволю себе проигнорировать.


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


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

Всё остальное - ваши фантазии на почве не знаю чего.

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

А меня удивляет как можно из моей фразы вывести вашу про идиотов и java.
Если первое "любая x..я" заменить на
- множественное наследование,
- готу
- статик члены классов
- динамическая типизация
- ...
получим очередную банальщину, которая не интересна никому, если не сопроводить её изучением границ х..я/не х..я. Но даже эти границы не могут быть постоянны, потому что определяются прежде всего решаемыми задачами.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34147903
dejavew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmo... Просто в джаваскрипте нет статических методов...

Немного не так, вот цитата из MSDN относительно ECMA-Features JScript:
MSDNThe Date object has two static methods that are called without creating a Date object. They are parse and UTC .


Если у "класса" Date нет статического метода для текущей даты, то это не значит, что их (статических методов) нет вообще.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34148092
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUsИмеет прямое отношение. Аналогия: класс все поля, которого паблик.
Забавно: Вы сказали ровно то же, что и я ("Команда профессионалов может быть и сможет вытянуть плохо спроектированное решение, но дизайн от того хорошим не станет."), но оформили так, словно возразили.

NotGonnaGetUsИспользование статиков для реализации глобального доступа к данным - точно такая же ситуация.
Итак, формулировка уже съеживается, вместо всеобъемлющей стало "реализации глобального доступа к данным". Что такое глобальный доступ - не понял, подозреваю, если пройти в этом направлении, дойдем до публичной глобальной переменной как "чаще всего" статика.

NotGonnaGetUsЧтобы не было проблем с пониманием:
Использование стататик членов классов для открытия доступа к каким-то данным и операциям с ними в том случае, когда без этого можно обойтись - бэд дизайн и тупость.
OK. Я может быть и придрался бы к формулировке, но по сути ближе к согласию. Если Вы согласны, что изначальное "чаще всего" сводится к этому утверждению, то мы пришли к согласию.

NotGonnaGetUs softwarer
Несколько секунд представлял себе Вас, делающего немудреную операцию удаления аппендицита с использованием безопасного пластикового ножа из набора для пикников.

Ну хоть развлеклись немного:)
Вот именно что.

NotGonnaGetUs softwarerНа свете есть ровно один безопасный инструмент: инструмент, примененный вовремя и по назначению.
Нет.

Если бы код писался один раз и на всегда - было бы всё равно _на чём_ его писать.
Если бы код не передавался "по наследству" - было бы всё равно _как_ он писался

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

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

NotGonnaGetUs softwarerЕще раз: ни хрена не нужно отслеживать. Нужно программировать надежно, так, чтобы потребность отслеживать не возникала.
О, да. Зарядил, так зарядил.
"Нужно" чтобы был мир во всём мире. И что с того? Как этого добится?
А это мы уже обсуждали. Писать объекты, которые не падают от "неправильного порядка инициализации свойств", которые не выдают NullPointerException вместо толковой диагностики и так далее. Попросту говоря, вернуться к истокам ООП - а именно к модульному программированию - и понять, что такое модуль и зачем он нужен - это на этапе дизайна. Ну а на этапе реализации - просто грамотность, техника кодирования.

NotGonnaGetUsПрограммировать надёжно - это значит фигачить куда попало статики?
Программировать надежно - это значит программировать надежно. Этой теме посвящены книги, в частности уважаемая мной монография Майерса.

К сожалению, прискорбно часто встречается лозунговая политика, типа "структурное программирование - это программирование без goto", "ООП - это программирование без case" или как у Вас, "что-то хорошее - это программирование без статиков". Прискорбная ситуация, когда человек не понимает сути и тупо-попугайно декларирует слоган.

NotGonnaGetUsА отслеживать нужно. Просто необходимо. Потому что подругому нельзя узнать, как используется какой-то код и какие последствия будут от его изменения, если только перед этим сам его не написал и не выучил при этом на изусть.
О! Просто замечательно. Начиная примерно с 65-го года люди думали, мучились, придумывали то самое модульное программирование, развивали идеологию, которая сейчас называется "инкапсуляция", все ради решения одной задачи: иметь возможность изменить код, не опасаясь сломать что-то в другом месте. А теперь приходите Вы, говорите "это просто необходимо" и полагаете это правильным дизайном.

NotGonnaGetUs"Надёжные" классы зависящие от статик членов, придётся все до одного изменить, если окажется, что статик член нуждается в модификации.
Полнейший бред. Я бы назвал передергиванием, но такое впечатление, что Вас уже просто занесло и Вы говорите вообще не думая.

"Все до одного приходится изменить" - если поменялся интерфейс используемого класса. Независимо от того, статики меняются или нестатики. "Никого не придется менять" - если меняется реализация используемого класса, опять же вне зависимости от того, статики меняются или нестатики.

Доказать этим "особую зависимость от статиков" - талант нужен. Особый талант, явно лежащий в стороне от традиционных дисциплин.

NotGonnaGetUs softwarer NotGonnaGetUsСюда же добавляются проблемы с многопоточностью.
И какие же? На примере вышеупомянутой задачи возврата текущей даты.
Кто там, что писал про передёргивания?
Я писал. Сможете обосновать наличие передергивания? Или просто считаете таковым каждую дырку в своей аргументации?

NotGonnaGetUsИтого, читаем:

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

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

NotGonnaGetUsЯ не телепат. А потому последующие ваши замечетельные выводы позволю себе проигнорировать.
Удобный выход.

NotGonnaGetUsВы почитайте ещё раз, что я писал. Я не предлагаю ампутировать static'и, я предалгаю не использовать их там, где их можно не использовать и использовать только там, где без них не обойтись.
Что ж, давайте таки прочитаем еще раз:

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

NotGonnaGetUsА меня удивляет как можно из моей фразы вывести вашу про идиотов и java.
Запомню и этот прием. Вы создаете такое впечатление, что я как-то связал эти понятия.

Единственный абзац, в котором я употребляю эти два слова, из Вашей фразы не "выведен". На основании нескольких Ваших фраз я постулировал, что Вы используете определенный метод рассуждений (признавая Ваше право оспорить эту посылку), показал, что этот метод рассуждений противоречит ранее высказывавшейся Вами точке зрения, и выразил недоумение этим фактом.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34148349
спрос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ахренеть. Два потенциальных(или не потенциальных) аналитика схлестнулись в холиваре. Может тоже подключиться :)
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34148360
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer NotGonnaGetUsИмеет прямое отношение. Аналогия: класс все поля, которого паблик.
Забавно: Вы сказали ровно то же, что и я ("Команда профессионалов может быть и сможет вытянуть плохо спроектированное решение, но дизайн от того хорошим не станет."), но оформили так, словно возразили.

**************************************************************
Модератор:
отредактировано


Восстанавливаем хистори:

Код: plaintext
1.
2.
3.
nggu:

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

Не существует бинарного критерия - это хорошо/это плохо. Я обозначил один из них.

Код: plaintext
1.
2.
3.
softwarer:

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

Вы отвергаете мой критерий. Обоснование не понятно. Вводите другой критерий.

Код: plaintext
1.
2.
3.
4.
5.
nggu:

Если работа идёт в команде "профессионалов", если процесс ревью кода налажен на 5+, если 
каждый в команде думает как один, то можно писать на чём угодно, как угодно, с любым 
количеством изуверств и извращений и надеждой, что через полгода этот код не вернётся на 
исправления или дополнения.

Т.к. обоснование против моих слов не приведено, я просто выражаюсь против вашего критерия.

Контрпример классы с только паблик членами. Потенциально количество связей в них огромно.
Однако в хорошей команде, можно построить процесс разработки так, что "реальных" связей будет минимальное количество.

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

Я что-то придумываю?

Код: plaintext
1.
2.
3.
4.
softwarer:

То все это замечательно, но к хорошему или плохому дизайну отношения не имеет. Команда 
профессионалов может быть и сможет вытянуть плохо спроектированное решение, но дизайн от 
того хорошим не станет. Равно и наоборот.

Ваш ответ мне не ясен. Мы говорили не о хорошем или плохом дизайне, а о вполне явно обозначенных способах определить какое из двух решений лучше. Итого: вы не поняли о чём я толковал.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
nggu:

Имеет прямое отношение. 

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

Использование статиков для реализации глобального доступа к данным - точно такая же ситуация.

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

Всё.

Где я "Вы сказали ровно то же, что и я"(с) в упор не вижу.



softwarer
Итак, формулировка уже съеживается, вместо всеобъемлющей стало "реализации глобального доступа к данным".

Я вас конечно люблю, но давайте оставим эти глупые придирки.
Я ещё 256 раз вам повторю - статики бэд дизайн - и при этом не буду произносить 65536 if/else описыващих частные случаи, когда нельзя, но всё-таки можно.

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

softwarer
OK. Я может быть и придрался бы к формулировке, но по сути ближе к согласию. Если Вы согласны, что изначальное "чаще всего" сводится к этому утверждению, то мы пришли к согласию.

Ну и слава богу.

softwarer
NotGonnaGetUsКривым решнием будет вынести данные на всеобщее обозрение, и в светлом будущем осваивать тонкости русского мата, пытаясь охаратеризовать принятое ранее кем-то умным решенее.
Еще раз: если именно так чаще всего применяют статики Ваши коллеги - их, конечно, следует воспитывать. Кроме этого, из этого прискорбного факта ничего не следует.

Не надо ещё раз. Почитайте что вы пишите.

Код: plaintext
1.
2.
3.
softwarer 

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


Оценка качества кода по количеству "реальных связей".

Код: plaintext
1.
2.
3.
nggu:

Кроме того, срез "реальных" связей отражает только решение в текущий момент времени. Меня же 
больше интересует и волнует, как это решение будет эволюционировать.  

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

Код: plaintext
1.
2.
3.
4.
5.
softwarer:

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

Почему "сегодня должно быть принято кривое решение" - не могу знать.

softwarer
NotGonnaGetUs softwarerЕще раз: ни хрена не нужно отслеживать. Нужно программировать надежно, так, чтобы потребность отслеживать не возникала.
О, да. Зарядил, так зарядил.
"Нужно" чтобы был мир во всём мире. И что с того? Как этого добится?
А это мы уже обсуждали (offtopic поскипан)

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

softwarer
Прискорбная ситуация, когда человек не понимает сути и тупо-попугайно декларирует слоган.

Давайте будем искренне друг с другом. Вы меня называете тупо декларирующим слоган человеком? :)

softwarer
NotGonnaGetUsА отслеживать нужно. Просто необходимо. Потому что подругому нельзя узнать, как используется какой-то код и какие последствия будут от его изменения, если только перед этим сам его не написал и не выучил при этом на изусть.
О! Просто замечательно. Начиная примерно с 65-го года люди думали (много ума пропущено).

А как же это "Еще раз: ни хрена не нужно отслеживать" (с) ? То говорите, что не нужно, то говорите, что нужно начиная с 65-го года. Определитесь.

softwarer
NotGonnaGetUs"Надёжные" классы зависящие от статик членов, придётся все до одного изменить, если окажется, что статик член нуждается в модификации.
Полнейший бред. Я бы назвал передергиванием, но такое впечатление, что Вас уже просто занесло и Вы говорите вообще не думая.


IoC в вольной трактовке. Можете не обращать внимание. Если мы с вами не можем сегодня договориться о такой простой вещи, как использование статиков там, где их можно не использовать, то тут у нас точно ничего хорошего не получится )


softwarer
NotGonnaGetUs softwarer NotGonnaGetUsСюда же добавляются проблемы с многопоточностью.
И какие же? На примере вышеупомянутой задачи возврата текущей даты.
Кто там, что писал про передёргивания?
Я писал. Сможете обосновать наличие передергивания? Или просто считаете таковым каждую дырку в своей аргументации?

Да уж. Вы решили дать тормоза по полной.
Существует большое количество вариантов, как использовать статик поля и методы.
Если статик методы stateless или уже синхронизированы, то проблем не будет.
В противном случае придётся позаботиться о синхронизации.
В отличии от классов, про объекты которых можно написать в комментарии, что их использование не безопасно в многопоточной программе, статические данные и синглтоны почти всегда используются в контексте многих потоков.

softwarer
NotGonnaGetUsИтого, читаем:

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

Если количество классов велико, необходимость исследовать потенциальные связи
Означает кривую технологию разработки, впрочем прискорбно типичную для явы.

Ох, вы и фокусник. А предложение вы продолжили с большой буквы для красоты? :))

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

softwarer
NotGonnaGetUsВы почитайте ещё раз, что я писал. Я не предлагаю ампутировать static'и, я предалгаю не использовать их там, где их можно не использовать и использовать только там, где без них не обойтись.
Что ж, давайте таки прочитаем еще раз:

А вы читайте всё, а не только сообщения недельной давности. Сегодня я уже трижды, наверное, привёл пояснения своей точки зрения. Если вас продолжает тянуть куда-то в сторону, то явно не
от желания придти к взаимопониманию :)

softwarer
NotGonnaGetUsА меня удивляет как можно из моей фразы вывести вашу про идиотов и java.
Запомню и этот прием. Вы создаете такое впечатление, что я как-то связал эти понятия.


Ну, я тогда снова за археологию возьмусь.

Код: plaintext
1.
2.
NotGonnaGetUs 
Мне, н-р, кажется не интересным повторять бесконечное число раз банальности вроде "любая х..я 
в ряде случаев не х..я". 

Код: plaintext
1.
2.
3.
softwarer 
Меня удивляет использованная Вами логика рассуждений "толпа идиотов, использующая нечто, 
делает это нечто х..й". И особенно удивляет сочетание этой логики с точкой зрения "Java не 
х...я", которую Вы высказывали в некоторых предыдущих беседах. 

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

Хотя с тем, что "Java не х...я" - соглашусь :)

Вероятно, неудачно было выбрано цитирование.

Модератор:
не удачно Вами был выбран текст, который я забил звездочками.
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34148361
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Четал. Понравилось. Согласен с обоими.

C уважением
Lord Mayton
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34149110
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все еще жду ответ на свой вопрос
...
Рейтинг: 0 / 0
Singleton vs Static members
    #34150548
dejavew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nggu...Речь шла о статиках.
Я говорил о том, что статики приводят к более тяжёлому коду, т.к. его труднее исследовать, потому что к статикам доступ имеет больше количество классов из большего количества контекстов...

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

Так все-таки, уважаемые softwarer и nggu , не могли бы вы более детально и адресно обсудить конкретную проблему: почему доступ N классов из M контекстов к статическому методу (getInstance()) общедоступного (public) синглтона лучше/хуже (правильнее/бэддизайнее) доступа тех же самых N классов из тех же самых M контекстов к общедоступному (public) статическому члену любого другого класса, который не синглтон?
(N и M, понятное дело - равны бесконечности).

З.Ы. ***************************************************************8
...
Рейтинг: 0 / 0
54 сообщений из 54, показаны все 3 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Singleton vs Static members
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]