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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Идиотские названия классов в Java 
:(
    Опции темы
 
Согласны ли вы, что названия некоторых классов и методов в Java были придуманы бесами?
Да [ 6 ]  [20.00%]
Нет [ 16 ]  [53.33%]
Это не бесы, а Господь заботится о нашей зарплате [ 8 ]  [26.67%]
Всего проголосовавших: 30
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Royan
  Дата 23.3.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


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

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



    В общем я давно это хотел высказать публично, да не находил времени. Меня всегда удивлял тот факт, что люди, которые должны в силу своих седин и многочисленных ранений под ребрами, проповедовать ясность и простоту кода, так вот именно они, порой выкобениваются почище коз на костромском лугу. Я в данном случае имею ввиду тот факт, что всем известное правило, - "Название класса/метода должно быть говорящим" было попрано архитекторами этого языка с поистине дьявольским размахом. Перейду от слов к делу. Возьмем два класса - Vector и ArrayList, простой нормальный еврей никогда не догадается, что эти два названия говорят о том, что первый является синхронизированной версией второго. Пойдем далее, как вам названия Hashtable и HashMap, прошу заметить, что в первом названии второе значащее слово написано с маленькой буквы. Наверное, у кого-то дрогнул мизинец или кнопка Shift залипла, а в далеком 95-м кроме кустарных перловых скриптов инструментов рефакторинга еще не существовало. 
   
   Коллекции это конечно отдельная история. Не проходит и месяца, как я забываю напрочь, какая из них, что означает и когда какую лучше использовать. Прошло больше 10 лет, из компании Sun ушли многие из тех, кто участвовал в написании версий больше единицы и меньше двух, но по всей видимости традиции нарушать там не принято и вот сначала появляется интуитивно понятная добавка в компанию к String'у и StringBuffer'у в виде StringBuilder'а а чуть погодя появляются новые коровые интерфейсы NavigableMap и NavigableSet с замечательным набором методов lower, floor, ceiling и higher (для Map они имеют суффиксы Entry и Key). Поднимите мне руку если вы догадались что они делают не разу не читав их описание, а теперь бросьте в меня камень те, кто читал о том, что они делают и никогда не путал floor с lower и ceiling с higher.
   Великий боже! Кто придумал название Externalizable, которое всего лишь означает, что сериализация будет происходить по моему усмотрению?!?!
Эх, написал бы дальше, но думаю пока достаточно. Суть моей петиции ясна. Ее итог ясен - хорошим программистам Java гарантирована хорошая зарплата(*) и слабое здоровье... конечно последнего не случится если вы не будете вместо завтрака и ужина пить двойную порцию каппучино, любезно сваренную вам кофе-машиной на офисной кухне.


* Здесь автор хочет сказать, что отчасти тенденция к усложнению играет на руку тем кто, успел в этом усложнении разобраться. И, хотя вот этого интервью (Интервью Бьорна Страуструпа, данное 1 января 1998 года для журнала Computer), на самом деле, никогда не было все же это забавно.

Это сообщение отредактировал(а) Royan - 23.3.2008, 20:28


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
Kangaroo
Дата 23.3.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


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

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



На самом деле кроме плохих архитектурных решений (названных тобой) есть еще много отличных, из-за которых мы и любим Java'y. И зарплата  тут ни при чем (хотя приятный момент ).
Тем более, я думаю, у умных дядек были причины так называть классы, интерфейсы, методы. Может мы когда-нибудь поймем их  smile 


--------------------
Lost....
PM MAIL MSN   Вверх
COVD
Дата 23.3.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

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



Цитата

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


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

Цитата

а чуть погодя появляются новые коровые интерфейсы NavigableMap и NavigableSet 


Ничто не обязывает это использовать. Эти изыски надо осваивать, когда нужда заставит (если вообще заставит). Лучше использовать проверенный "велосипед", чем неудачно применить новинку. Я им вообще желал бы притормозить с новшествами. На мой взгляд в 1.1 -1.2 уже был сделан необходимый минимум. Да ведь неинтересно так творческим людям.  


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


Опытный
**


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

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



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


--------------------
Thank you opensource.
PM MAIL ICQ   Вверх
$tatic
Дата 23.3.2008, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Изначально в Java 1.0 были Vector и Hashtable. После того, как появился Java Collections Framework, были введены вполне логичные классы с именами ArrayList и HashMap. Одновременно Vector и Hashtable оставили для обратной совместимости и доработали для совместимости с JCF, сделав синхронизированными.

Код

+--------------------+---------------------------------------------------------------------------------------+
|                    |                                  Implementations                                      |
|                    +------------+-----------------+---------------+-------------+--------------------------+
|                    | Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + Linked List |
+------------+-------+------------+-----------------+---------------+-------------+--------------------------+
|            |  Set  |   HashSet  |                 |    TreeSet    |             |      LinkedHashSet       |
| Interfaces | List  |            |    ArrayList    |               | LinkedList  |                          |
|            | Deque |            |    ArrayDeque   |               | LinkedList  |                          |
|            |  Map  |   HashMap  |                 |    TreeMap    |             |      LinkedHashMap       |
+------------+-------+------------+-----------------+---------------+-------------+--------------------------+


Насчет floor, lower, higher и ceiling (условия соответственно <=, <, >, >=) могу сказать, что англоговорящим программистам эти слова ближе и более понятны.
Ну а Externalizable так был назван видимо потому, что он предоставляет методы readExternal и writeExternal (наподобие того как в .NET есть интерфейс IDisposable с методом Dispose).
Кстати "externalize" гугл переводит как "курирую", что означает "контролирую процесс". Следовательно "externalizable" можно перевести как "можно контролировать процесс".

Это сообщение отредактировал(а) $tatic - 23.3.2008, 21:47
PM MAIL   Вверх
$tatic
Дата 23.3.2008, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PS. Хотел проголосовать за корректность имен классов, но по ошибке т.к. вопрос начинается как "Согласны ли Вы" проголосовал за "Да", хотя имел в виду совсем обратное. Возможно причина в том, что вопрос был сформулирован на бесовско-юридическом языке smile
PM MAIL   Вверх
niasilil
Дата 23.3.2008, 22:41 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



StringBuffer vs StringBuilder  - ясно что разные, не составляет труда запомнить разницу. 
Hashtable - наоборот хорошо что с маленькой буквы, хорошее напоминание что старая штука и без надобности пользовать не надо. Опять же позволяет легко запомнить что эта штука synchronized, в стародавние времена многое было медленно, это сейчас все летает, потому часто надобности в синхронизации нет. smile
ArrayList - отличное название. Vector хуже, но изначально было тоже хорошее. Не называть же было ArrayList скажем как NonSyncVector  smile 
Externalizable - видно что похоже на Serializable но другое, это отличие надо запомнить. Отличное название, по моему. Есть другие варианты? 
lower, floor, ceiling и higher - интуитивно понятно, но пока не пользовал. Посмотрел API - да, навания отлично отражают суть. Сами названия NavigableMap и NavigableSet тоже отлично отражают суть. Не понимаю в чем проблема. 

Такое ощущение что у тебя просто стоит изначальная установка на то что это глупость, потому и принять не получается. 

Это сообщение отредактировал(а) niasilil - 23.3.2008, 22:42


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
w1nd
Дата 23.3.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


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

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



Если честно - никогда не заботили такие вещи. Java runtime создавали и дополняли разные люди, в разное время, у каждого свои предпочтения и разное количество тараканов в голове smile 

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

Это сообщение отредактировал(а) w1nd - 23.3.2008, 23:26


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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