Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> static - хорошо или плохо? 
:(
    Опции темы
TupleCa
Дата 3.12.2006, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



объявление переменных и методов как static является ли как плохим стилем программировани?

вообще  я читал что лучше что бы не было таких.

хотел бы узнать тогда примеры, когда без static вообще никак, кроме слуая c main()
PM   Вверх
powerOn
Дата 3.12.2006, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



static - это хорошо. Классический пример: Подсчет количества экземпляров классов. при создании экземпляра счетчик увеличивается на 1, при уничтожении - уменьшается на единицу.
Еще пример: с помощью static хорошо хранить константы:

Код

class Colors {
    public final static int RED = 1;
    public final static int GREEN = 2;
.......

}


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

Про методы:
Иногда есть необходимость отделить алгоритм от данных. Вернее алгоритм не нуждается в запоминании данных. Такие методы неплохо объединить в классы-утилиты. Хороший пример, всем известный класс java.lang.Math со своими статическими методами cos(), sin() и т.д.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
batigoal
Дата 3.12.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(TupleCa @  3.12.2006,  21:37 Найти цитируемый пост)
объявление переменных и методов как static является ли как плохим стилем программировани?

Как таковые, static-члены не являются ни плохими, ни хорошими. Другое дело, что в не всегда их применение является оправданным.

Думай об этом так: если значение поля будет различным для каждого из объектов данного класса, то они не должны являться статичными. Если же это свойство распространяет свое действие на все объекты класса, и его значение является одинаковым для всех них - это static-поле.
Аналогично, если метод нуждается для своей работы в данных из конкретного экземпляра - это обычный метод. Если же он имеет смысл и без создания экземпляра класса - это static-метод. Например, Calendar.getAvailableLocales(). Для получения списка возможных локализаций календаря нам нет необходимости создавать реальный объект - ведь для всех экземпляров календаря этот список будет одинаковым.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
nerezus
Дата 4.12.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Цитата

вообще  я читал что лучше что бы не было таких.
 Больше эту штуку не читай )

Добавлено @ 10:11 
Пример: паттерн singleton. Ну и как его без static сделать? )


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
batigoal
Дата 4.12.2006, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(nerezus @  4.12.2006,  11:09 Найти цитируемый пост)
Пример: паттерн singleton. Ну и как его без static сделать? )

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


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
TupleCa
Дата 4.12.2006, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



я всё-таки думаю, что статик-члены это "зло". хотя с его использованием можно решить некоторые задачи более эффективно, но всё-таки если не критично, то нужно без него обходиться стараться. а в дальнейшем вообще убрать его из языка.
PM   Вверх
LSD
Дата 4.12.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(nerezus @  4.12.2006,  10:09 Найти цитируемый пост)
Пример: паттерн singleton. Ну и как его без static сделать? )

Почитай Маленький тест, там это уже обсуждалось smile


Цитата(TupleCa @  4.12.2006,  11:25 Найти цитируемый пост)
я всё-таки думаю, что статик-члены это "зло". хотя с его использованием можно решить некоторые задачи более эффективно, но всё-таки если не критично, то нужно без него обходиться стараться. а в дальнейшем вообще убрать его из языка.

Это не зло, это просто средство. Другое дело что им можно пользоваться неправильно. Хороший пример привел powerOn, создавать экземпляр java.lang.Math для того чтобы посчитать синус это как минимум глупо.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 4.12.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(powerOn @  3.12.2006,  20:51 Найти цитируемый пост)
static - это хорошо. Классический пример: Подсчет количества экземпляров классов. при создании экземпляра счетчик увеличивается на 1, при уничтожении - уменьшается на единицу.


Пока не появились классы наследники - да. Пока не пошли игры с сериализацией - да.
Поэтому никакого "хорошо" тут нет.

Естественное место для такого "счётчика" - это обычное поле в классе Class данного объекта.


Цитата(powerOn @  3.12.2006,  20:51 Найти цитируемый пост)
Еще пример: с помощью static хорошо хранить константы:


"final static" - это синонимом "const", но только до тех пор, пока хранимый объект является immutable.

Пока "final static" является "const" - всё хорошо.
В противном случае получаем выставленный на всеобщее обозрение и изменение объект, что очень и очень плохо. Это требует доказательств?

Отличное место для хранения констант enum. 


Цитата(powerOn @  3.12.2006,  20:51 Найти цитируемый пост)
Иногда есть необходимость отделить алгоритм от данных. Вернее алгоритм не нуждается в запоминании данных. Такие методы неплохо объединить в классы-утилиты. Хороший пример, всем известный класс java.lang.Math со своими статическими методами cos(), sin() и т.д. 


1. Отделение алгоритма от данных != stateless алгоритмам.

а) Паттерн визитор на статик методах пробовали делать? Полиморфизм на статик методах не работает.

б) stateless чаще всего достигается за счёт передачи большого числа параметров в метод. Декомпозиция подобных методов приводит к появлению "кочующих" параметров и прочим антипаттернам структурного программирования.
Избавившись от stateless (связав данные и их обработку) легко избавиться от кочующих параметров.

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

3. java.lang.Math хороший пример того, как не нужно делать.  Классы с полностью статическими методами не поддаются настройке, и их использование приводит к тому, что более общие классы оказываются в зависимости от деталей реализации (читать про osp, н-р, в книге http://www.ozon.ru/context/detail/id/1573723/  и про ioc).


Цитата(batigoal @  3.12.2006,  22:48 Найти цитируемый пост)
Другое дело, что в не всегда их применение является оправданным.

вот она истина smile

Цитата(nerezus @  4.12.2006,  10:09 Найти цитируемый пост)
Пример: паттерн singleton. Ну и как его без static сделать? ) 

Синглтон тоже не бог весть какой полезный паттерн. Он уместен в случаях, когда нужно вынести конфигурацию некоторых связей в приложении из compile в runtime time. Остальные случаи использования синглтонов либо неуместны, либо могут быть заменены апектами, фокусами с атрибутами и прочей кодогенерацией без образования не контролируемых связей в приложении.

Совсем без static-ов не обойтись (в java), но прежде чем их использовать нужно кучу раз подумать над тем, как обойтись без них.

PM MAIL   Вверх
LSD
Дата 4.12.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  4.12.2006,  13:53 Найти цитируемый пост)
Пока не появились классы наследники - да. Пока не пошли игры с сериализацией - да.

1. Чем мешают наследники?
2. private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException; пока никто не отменял.

Цитата(NotGonnaGetUs @  4.12.2006,  13:53 Найти цитируемый пост)
Естественное место для такого "счётчика" - это обычное поле в классе Class данного объекта.

Пример как это сделать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 4.12.2006, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Прямо таки спор что лучше - стул или отбойный молоток....

Если молотком неудобно кушать - это не значит что его надо выбросить.

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


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
NotGonnaGetUs
Дата 4.12.2006, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  4.12.2006,  14:10 Найти цитируемый пост)
Чем мешают наследники


Наследник обязан увеличивать счётчик при своём создании или нет?
А кто гарантирует, что какой-то наследник не решит воспользоваться этим полем по своему усмотрению, а в итоге перестанет работать класс родитель?
И т.д.



Цитата(LSD @  4.12.2006,  14:10 Найти цитируемый пост)
пока никто не отменял.

По дефолту статик поля не сериализуются. 
Нужно делать это вручную.
Нужно проверять в той ли jvm был восстановлен объект, чтобы корректно изменять счётчик.
Является акт десериализации созданием объекта? 
И т.д.

Цитата(LSD @  4.12.2006,  14:10 Найти цитируемый пост)
Пример как это сделать.

Я привёл пример, как сделать счётчик "правильно".
То, что Class класс идущий в составе jdk нельзя модифицировать (без игр с рантаймом) не значит, что мой пример не корректен.

PM MAIL   Вверх
kkorsakoff
Дата 4.12.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Добавлю свои 5 копеек.
Игры с синглтонами могут очень быстро привести к OutOfMemory PermGen space'а. Это я говорю про рестарт веб-приложений. Так что в j2ee лучше даже и не думать пользоваться паттерном синглтон.
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 4.12.2006, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(kkorsakoff @  4.12.2006,  14:21 Найти цитируемый пост)
Добавлю свои 5 копеек.
Игры с синглтонами могут очень быстро привести к OutOfMemory PermGen space'а. Это я говорю про рестарт веб-приложений. Так что в j2ee лучше даже и не думать пользоваться паттерном синглтон. 


Если криво программить, то и сингелтона для этого необязательно smile 

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
TupleCa
Дата 4.12.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Цитата(sergejzr @  4.12.2006,  15:32 Найти цитируемый пост)
что может повысить его читабельность. 


думаю, что  не всегда при уменьшении кода улучшается его читабельность. 
PM   Вверх
LSD
Дата 4.12.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  4.12.2006,  15:11 Найти цитируемый пост)
Наследник обязан увеличивать счётчик при своём создании или нет?

Все зависит от конкретных условий, но и то и другое поведение можно реализовать.

Цитата(NotGonnaGetUs @  4.12.2006,  15:11 Найти цитируемый пост)
А кто гарантирует, что какой-то наследник не решит воспользоваться этим полем по своему усмотрению, а в итоге перестанет работать класс родитель?

1. Кто мешает сделать его приватным?
2. Где гарантия, что некий злоумышленник не воспользуется рефлексией и не развалит вообще все?

Цитата(NotGonnaGetUs @  4.12.2006,  15:11 Найти цитируемый пост)
По дефолту статик поля не сериализуются. 
Нужно делать это вручную.

А зачем нужно сериализовать счетсчик объектов?

Цитата(NotGonnaGetUs @  4.12.2006,  15:11 Найти цитируемый пост)
Нужно проверять в той ли jvm был восстановлен объект, чтобы корректно изменять счётчик.
Является акт десериализации созданием объекта? 

Зачем это все нужно? Объект был создан? Был. Увеличиваем счетчик. Тем более что при сериализации конструктор все равно вызывается, можно сделать так, что достаточно будет существующих методов.
Там еще есть clone(), но там проблемы тоже решаются.


Цитата(NotGonnaGetUs @  4.12.2006,  15:11 Найти цитируемый пост)
Я привёл пример, как сделать счётчик "правильно".
То, что Class класс идущий в составе jdk нельзя модифицировать (без игр с рантаймом) не значит, что мой пример не корректен.

Он некорректен для Java.
Кстати, а в каком ЯП он корректен?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Bulat
Дата 4.12.2006, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: 4
Всего: 57



Цитата(chief39 @  4.12.2006,  14:50 Найти цитируемый пост)
Это лишь инструмент и как его использовать - решать разработчику. 
Естественно, опираясь на здравый смысл 

полностью согласен, пользуюсь не часто(как в последнее время и на яве попрограммисть не умного бывает времени), однако бывает иногда удобно приписать статик ничего сверхтакого не придумывая
Цитата(batigoal @  4.12.2006,  10:13 Найти цитируемый пост)
Да можно обойтись и без статика, теоретически. Например, создавая некий ключевой файл, или вешаясь на определенный порт. Более того, это решит проблему одного экземпляра на нескольких JVM. Но это все экзотика 

Вот как раз тот момент, конечно можно прибегнуть и к экзотике, но есть принцип KISS - "Keep it simple, stupid" smile 


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
sergejzr
Дата 4.12.2006, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



А кто сказал, что "ВСЕГДА"? В данном случае читабельность однозначно улучшится из за того, что строчек создания и инициализации обьекта, не влияющих на логику программы станет меньше.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
kkorsakoff
Дата 4.12.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.10.2005
Где: Санкт-Петербург

Репутация: 3
Всего: 14



Цитата(sergejzr @ 4.12.2006,  15:32)
Цитата(kkorsakoff @  4.12.2006,  14:21 Найти цитируемый пост)
Добавлю свои 5 копеек.
Игры с синглтонами могут очень быстро привести к OutOfMemory PermGen space'а. Это я говорю про рестарт веб-приложений. Так что в j2ee лучше даже и не думать пользоваться паттерном синглтон. 


Если криво программить, то и сингелтона для этого необязательно smile 

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

В итоге мы говорим об одном и том же, все дело в ровности рукsmile
Но где к примеру учат правильно освобождать класс, чтобы он был собран GC?

Рекомендую этот небольшой материал к прочтению дабы избежать в будущем
http://readlist.com/lists/tomcat.apache.or...rs/3/19056.html

http://wiki.apache.org/tomcat/OutOfMemory

и вообще почитать о проблеме
http://www.google.ru/search?hl=ru&q=pe...ngleton&lr=

А между прочим этой "кривостью" грешат и разработчики cglib и (по слухам) Spring.
Ни разу не сталкивались? 

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

Это сообщение отредактировал(а) kkorsakoff - 4.12.2006, 18:02
PM MAIL WWW ICQ   Вверх
NotGonnaGetUs
Дата 4.12.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
и то и другое поведение можно реализовать


Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
 Кто мешает сделать его приватным

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

Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
некий злоумышленник 

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

Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
А зачем нужно сериализовать счетсчик объектов?

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


Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
Тем более что при сериализации конструктор все равно вызывается, можно сделать так, что достаточно будет существующих методов.

Даже у синглтона? А как же чудесный метод, название которого было выделено болдом?




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




Цитата(LSD @  4.12.2006,  15:51 Найти цитируемый пост)
Он некорректен для Java

Ещё раз:
Если бы класс Сlass можно было бы модифицировать - это было бы отличное решение.

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


PM MAIL   Вверх
batigoal
Дата 4.12.2006, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



kkorsakoff, интересные материалы.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
LSD
Дата 5.12.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Если сделать его приватным, то можно будет реализовать только одно поведение, а не то и другое.

Почему же:
Код
  private static int count = 0;
  private static final boolean countDescendant = false;

  private static synchronized void inc(Starter o)
  {
    if(countDescendant)
    {
      count++;
    }
    else
    {
      if(o.getClass() == Starter.class)
        count++;
    }
  }


Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Не нужно злоумышленников, дураков и так достаточно. 
Н-р, двух программистов один из которых решит, что в его классе счётчик будет считать только его собственные экземпляры, а другой все экземпляры включая наследников.

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

Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Н-р, чтобы возвращаемый при удалённых вызовах объект с пришитым счётчиком, вёл себя после десериализации точно так же как и до (допустим есть логика зависящая от количества созданных объектов).

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

Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Даже у синглтона? А как же чудесный метод, название которого было выделено болдом?

А причем тут синглтон? В данном контексте речь шла о счетчике объектов.

Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Если бы класс Сlass можно было бы модифицировать - это было бы отличное решение.

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

1. Он не для этого создавался, это скорее служебны класс, чем класс общего назначения.
2. Ну поместишь ты статик поля в java.lang.Class и что это тебе даст?



Цитата(NotGonnaGetUs @  4.12.2006,  18:03 Найти цитируемый пост)
Я не предлагаю никому разработать тз на счётчик объектов,  я просто говорю, что у решения с статиком воз и маленькая тележка ньюансов, игнорирование которых приводит к неочевидным ошибкам, а не игнорирование делает решение со статиком отнюдь не "хорошим", как было заявлено изначально.

ОК, давай рассмотрим конкретный пример. Есть класс java.util.logging.LogRecord, и у каждого объекта есть уникальный sequenceNumber (например на тот случай если точности таймера недостаточно). Сейчас там все реализовано через static поля. Как ты предлагаешь это все реализовывать без них?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sergejzr
Дата 5.12.2006, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(NotGonnaGetUs @  4.12.2006,  17:03 Найти цитируемый пост)
Ещё раз:
Я не предлагаю никому разработать тз на счётчик объектов,  я просто говорю, что у решения с статиком воз и маленькая тележка ньюансов, игнорирование которых приводит к неочевидным ошибкам, а не игнорирование делает решение со статиком отнюдь не "хорошим", как было заявлено изначально.

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


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
NotGonnaGetUs
Дата 6.12.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  5.12.2006,  13:13 Найти цитируемый пост)
Да и вообще без четких требований тут можно спорить до опупения.


Я и не спорил, а приводил факты иллюстрирующие недостатки решения со счётчиком на статиках. 



Цитата(LSD @  5.12.2006,  13:13 Найти цитируемый пост)
Ну поместишь ты статик поля в java.lang.Class и что это тебе даст?


Код

class Class {
    private int count;
}

где статик?


Цитата(LSD @  5.12.2006,  13:13 Найти цитируемый пост)
Почему же:

Это что такое?

Где находится этот метод?
Кто такой starter?
Откуда будет вызываться inc?
Как наследники класса Starter могут поменять значение countDescendant, настроив его под себя?

 

Цитата(sergejzr @  5.12.2006,  13:22 Найти цитируемый пост)
целесообразность статических функций

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

Цитата(sergejzr @  5.12.2006,  13:22 Найти цитируемый пост)
и констант

Константы обозначаются парой "final static", что равно в некоторых случаях "const" (об этом я уже писал). Против "const" трудно что-то иметь smile Однако const - это не тоже самое, что static. 


PM MAIL   Вверх
LSD
Дата 7.12.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @ 6.12.2006,  14:25)
Я и не спорил, а приводил факты иллюстрирующие недостатки решения со счётчиком на статиках.

Предложи решение лучше.

Цитата(NotGonnaGetUs @ 6.12.2006,  14:25)
Цитата(LSD @  5.12.2006,  13:13 Найти цитируемый пост)
Ну поместишь ты статик поля в java.lang.Class и что это тебе даст?

Код

class Class {
    private int count;
}

где статик?

Об этом я и говорил, ну перенес ты поле count из класса в java.lang.Class, плюс сделал его из статика не статиком, и где тут кардинальное улучшение ситуации? Плюс ты предлагаешь ради одного класса со счетчиком добавить переменную count ко всем классам загруженным в JVM?


Цитата(NotGonnaGetUs @ 6.12.2006,  14:25)
Это что такое?

Где находится этот метод?
Кто такой starter?
Откуда будет вызываться inc?

Код
class Counter
{
  private static int count = 0;
  private static final boolean countDescendant;

  static
  {
    countDescendant = <check_some_condition>;
  }

  private static synchronized void inc(Counter o)
  {
    if(countDescendant)
    {
      count++;
    }
    else
    {
      if(o.getClass() == Counter.class)
        count++;
    }
  }

  private static synchronized void dec(Counter o)
  {
    if(countDescendant)
    {
      count--;
    }
    else
    {
      if(o.getClass() == Counter.class)
        count--;
    }
  }

  public static int getCount()
  {
    return count;
  }


  public Counter()
  {
    super();
    inc(this);
  }

  protected void finalize() throws Throwable
  {
    super.finalize();
    dec(this);
  }
}

Цитата(NotGonnaGetUs @ 6.12.2006,  14:25)
Как наследники класса Starter могут поменять значение countDescendant, настроив его под себя?

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 7.12.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  7.12.2006,  13:00 Найти цитируемый пост)
Предложи решение лучше.


Уже предложил smile

Если не видно другого решения - это не значит, что имеющееся хорошее. (народная мудрость)


Цитата(LSD @  7.12.2006,  13:00 Найти цитируемый пост)
Как хочешь, хочешь даш возможность менять этот параметр, не хочешь не даш. Счетчий твой, и ты решаешь как и кто может его использовать. 


Тогда на пальцах.

Counter <- Class A  <- Class B 

В counter хочу считать только экземпляры класса counter.
В A хочу считать экземпляры А + всех наследников.
В В - только количество экземпляров В.

Как мне менять этот параметр? smile
PM MAIL   Вверх
sergejzr
Дата 7.12.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(NotGonnaGetUs @  7.12.2006,  14:28 Найти цитируемый пост)
В counter хочу считать только экземпляры класса counter.
В A хочу считать экземпляры А + всех наследников.
В В - только количество экземпляров В.


Ясное дело, что тут несколько счётчиков надо smile

Цитата(NotGonnaGetUs @  6.12.2006,  13:25 Найти цитируемый пост)
Цитата(sergejzr @  5.12.2006,  13:22 Найти цитируемый пост)
целесообразность статических функций

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


Не для чего применяются, а к чему относятся. Тот же sin к примеру. Если мемберы класса не используются (т.е функция самодостаточна), то можно делать static.




--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 7.12.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  7.12.2006,  15:28 Найти цитируемый пост)
Если не видно другого решения - это не значит, что имеющееся хорошее. (народная мудрость)

Сам придумал? smile

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

Цитата(NotGonnaGetUs @  7.12.2006,  15:28 Найти цитируемый пост)
Counter <- Class A  <- Class B 

В counter хочу считать только экземпляры класса counter.
В A хочу считать экземпляры А + всех наследников.
В В - только количество экземпляров В.

Как мне менять этот параметр?

Пусть у нас объектов типа Counter - 3, A - 7, B - 13. Значит счетчик в Counter = 3, в A = 20, B = 13. Разве не очевидно, что одним счетчиком тут не обойтись? Или ты сомневаешься в реализуемости таких счетчиков?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 8.12.2006, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(sergejzr @  7.12.2006,  15:53 Найти цитируемый пост)
Не для чего применяются, а к чему относятся. Тот же sin к примеру. Если мемберы класса не используются (т.е функция самодостаточна), то можно делать static.


"Можно" != "Нужно" (ещё одна народная мудрость).

Н-р, сделав метод статическим мы уже не сможем его перекрыть в классе наследнике. 


Цитата(LSD @  7.12.2006,  18:11 Найти цитируемый пост)
Разве не очевидно, что одним счетчиком тут не обойтись? 

Ну так продемонстрируй.  Люблю очевидные вещи.

Очень хочется посмотреть на копи-паст кода из класса counter в A и В, или на новый класс "Counter", который теперь точно будет считать не сам себя, а другие классы.

И больше всего, хочется увидить "простоту" с какой static'и позволяют всё это сделать smile

Добавлено @ 14:21 
Цитата(LSD @  7.12.2006,  18:11 Найти цитируемый пост)
Поставленную задачу все равно надо выполнять, так что уж лучше выпольнить не идеальным способом, чем совсем отказаться от выполнения, мотивируя это тем, что идеального решения нет.


Следим за логикой:

Цитата(powerOn @  3.12.2006,  20:51 Найти цитируемый пост)
static - это хорошо. Классический пример: Подсчет количества экземпляров классов. при создании экземпляра счетчик увеличивается на 1, при уничтожении - уменьшается на единицу.


Статики - это плохо. Классический пример плохого кода, который получается с их использованием: подсчёт количества экземпляров класса.

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

Вопрос:
Где я предлагаю отказаться от выполнения задачи?  Если такого места нет, то зачем пытаться мне это приписать?
PM MAIL   Вверх
sergejzr
Дата 8.12.2006, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(NotGonnaGetUs @  8.12.2006,  13:13 Найти цитируемый пост)
"Можно" != "Нужно" (ещё одна народная мудрость).

Н-р, сделав метод статическим мы уже не сможем его перекрыть в классе наследнике. 

Естесственно нет. Естесственно любой инструмент надо применять по делу, а не просто так. Зачем например sin  в наследниках переписывать???


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 8.12.2006, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  8.12.2006,  14:13 Найти цитируемый пост)
Очень хочется посмотреть на копи-паст кода из класса counter в A и В, или на новый класс "Counter", который теперь точно будет считать не сам себя, а другие классы.

Ты имеешь в виду, научить тебя пользоваться Ctrl+C, Ctrl+V? smile


Цитата(NotGonnaGetUs @  8.12.2006,  14:13 Найти цитируемый пост)
Следим за логикой:
...
Вопрос:
Где я предлагаю отказаться от выполнения задачи?  Если такого места нет, то зачем пытаться мне это приписать?

А где я приписывал тебе, что ты предлагаешь отказаться от выполнения задачи? Там все безлично smile

NotGonnaGetUs, ты пока что не привел ни одного конкретного примера, а только критикуешь и сыпешь народными мудростями.
Раз уж ты ратуешь за возможность изменения java.lang.Class, то приведи конкретный пример, как это должно быть реализовано по твоему, а мы покритикуем smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 8.12.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  8.12.2006,  15:49 Найти цитируемый пост)
Ты имеешь в виду, научить тебя пользоваться Ctrl+C, Ctrl+V? 


Ты имеешь в виду, что копи-паст это "хорошее" решение?!


Цитата(LSD @  8.12.2006,  15:49 Найти цитируемый пост)
А где я приписывал тебе, ... Там все безлично 

Т.е. ты просто о чём-то своём решил поговорить и к цитате из моего сообщения реплика не имеет отношения? ) 


Цитата(LSD @  8.12.2006,  15:49 Найти цитируемый пост)
а только критикуешь 


А что мне остаётся делать в ответ на утверждение, что плохой код является хорошим, потому что другого нет?!

Согласись, что static'и приводят к плохому коду и всё станет на свои места smile

Цитата(LSD @  8.12.2006,  15:49 Найти цитируемый пост)
Раз уж ты ратуешь за возможность изменения java.lang.Class, то приведи конкретный пример, как это должно быть реализовано по твоему, а мы покритикуем  


Нутро jvm знает о количестве объктов и классах всё.
В Class добавляем native методы "получитьКоличествоОбъектов()/получитьКоличествоВключаяНаследников()", которые из jvm выбирают всю необходимую информацию.
Если в каком-то из пользовательских классов потребуется считать подобные величины, нужно будет просто дёрнуть соответсвующий метод у this.getClass().

Никакого мозготраха. Остальные требования легко реализуются на этом базисе.


Это сообщение отредактировал(а) NotGonnaGetUs - 8.12.2006, 18:10
PM MAIL   Вверх
LSD
Дата 10.12.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  8.12.2006,  18:07 Найти цитируемый пост)
А что мне остаётся делать в ответ на утверждение, что плохой код является хорошим, потому что другого нет?!

Согласись, что static'и приводят к плохому коду и всё станет на свои места

Я не вижу в этом коде, ничего плохого (ну кроме того, что он тебе не нравиться smile ). Он работает и работает нормально. Что еще требуется?


Цитата(NotGonnaGetUs @  8.12.2006,  18:07 Найти цитируемый пост)
Нутро jvm знает о количестве объктов и классах всё.
В Class добавляем native методы "получитьКоличествоОбъектов()/получитьКоличествоВключаяНаследников()", которые из jvm выбирают всю необходимую информацию.
Если в каком-то из пользовательских классов потребуется считать подобные величины, нужно будет просто дёрнуть соответсвующий метод у this.getClass().

Никакого мозготраха. Остальные требования легко реализуются на этом базисе.

Действительно! Что может быть легче для прикладного программиста, чем написать native функцию которая будет лезть в нутро JVM и доставать отуда информацию о количестве объектов (особенно легко это будет делать если надо еще всех наследников считать).
Вот тут уж точно не будет никакого мозготраха, потому как кроме парочки маньяков, никто так делать не будет.

Кстати, исходники JVM открыты, так что в подтверждение своей теории можешь попробовать реализовать такую функциональность у java.lang.Class smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 11.12.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  10.12.2006,  13:42 Найти цитируемый пост)
ничего плохого 


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

Это значит "ничего плохого"?  Хорошо, что я работаю не в одной команде с вами 6)


Цитата(LSD @  10.12.2006,  13:42 Найти цитируемый пост)
Действительно! Что может быть легче для прикладного программиста, чем написать native функцию


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

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

Это сообщение отредактировал(а) NotGonnaGetUs - 11.12.2006, 12:27
PM MAIL   Вверх
powerOn
Дата 11.12.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159




 ! 
powerOn
NotGonnaGetUs, давайте на личности не будем переходить. ;-)






--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
LSD
Дата 11.12.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  11.12.2006,  12:26 Найти цитируемый пост)
Я перечислил целую кучу проблем и вопросов возникающих при использовании статик поля.

Что-то я не припомню среди них, ни одно не решаемой. В основно они сводятся к: "а вот если мне понадобится ...".


Цитата(NotGonnaGetUs @  11.12.2006,  12:26 Найти цитируемый пост)
Это шутка юмора такая или ты, действительно, не понимаешь что хорошие и плохие решения существуют не зависимо от того можешь ты их реализовать или нет?

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


Цитата(NotGonnaGetUs @  11.12.2006,  12:26 Найти цитируемый пост)
Возьми любую прикладную библиотеку. Наверняка, там надётся что-то, что тебе захочется поменять/переделать. Н-р, добавить поле или метод в недостаточно хорошо спроектированный  библиотечный класс. То, что никто тебе это не даст этого сделать, не сделает требующий изменений класс автоматически "хорошим".
И тем не менее, именно такое заявление ты делаешь сейчас относительно счётчика на статиках.

Прикладная библиотека вещь заменяемая намного легче, чем основы ЯП. Так что пример не корректен.
Насчет счетчика я заявляю что:
  • это работает
  • работает так как мне надо
  • легко реализуется
  • кому не нравится, пусть не использует smile

Цитата(NotGonnaGetUs @  11.12.2006,  12:26 Найти цитируемый пост)
Хорошо, что я работаю не в одной команде с вами 6)

Взаимно smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
NotGonnaGetUs
Дата 11.12.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(LSD @  11.12.2006,  14:31 Найти цитируемый пост)
Что-то я не припомню среди них, ни одно не решаемой


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

О копи-пасте, как одном из способов решения всех проблем, я уже услышал...

Цитата(LSD @  11.12.2006,  14:31 Найти цитируемый пост)
Все таки программирование это не философия 

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

Программирование без философии - это просто кодоклепание.

Цитата(LSD @  11.12.2006,  14:31 Найти цитируемый пост)
Прикладная библиотека вещь заменяемая намного легче, чем основы ЯП. Так что пример не корректен.

Пример более, чем корректен. Класс Class - это всего лишь часть java api такая же как класс ArrayList.


Цитата(LSD @  11.12.2006,  14:31 Найти цитируемый пост)
Так что я предпочитаю выбирать среди реализуемых решений, и решение которое работает и не создает кучу проблем я считаю хорошим.


Ага, и т.к. решение со статиком создаёт кучу проблем, то оно всё-таки не хорошее? smile


PM MAIL   Вверх
Metal_Heart
Дата 11.12.2006, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: 4
Всего: 12



На мой взгляд спор зашел в тупик.
Не тратьте время даром, друзья! Давайте отложим этот вопрос на неопределенный срок, если кому интересно, конечно.


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
LSD
Дата 11.12.2006, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(NotGonnaGetUs @  11.12.2006,  16:07 Найти цитируемый пост)
Нельзя написать хороший код, не умея отличать хороший код от плохого (так можно только себя обманывать). Можете называть это умение философией, если угодно.Вся эта философия легко умещается в нескольких шаблонах распределения обязанностей (grasp)

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

Цитата(NotGonnaGetUs @  11.12.2006,  16:07 Найти цитируемый пост)
Пример более, чем корректен. Класс Class - это всего лишь часть java api такая же как класс ArrayList.

Ну, да конечно smile
Как по твоему должен работать ClassLoader без Class? Или ClassLoader тоже опциональная вещь, от которой можно тоже легко отказаться? smile

Цитата(NotGonnaGetUs @  11.12.2006,  16:07 Найти цитируемый пост)
Ага, и т.к. решение со статиком создаёт кучу проблем, то оно всё-таки не хорошее?

1. Мне оно не создает проблем
2. Логическую цепочку решение со статиком создаёт кучу проблем => оно всё-таки не хорошее ты сам придумал, я такого не писал.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2080 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.