![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Давно мучался проблемой всё нарастающего бардака при написании больших библиотек скриптов. Их можно структурировать, разбивать по разным JS-файлам, но остаются потенциальные конфликты имён и проблемы поиска в этой массе одноуровневого кода из сотен мелких и не очень функций, связанных причудливыми взаимоотношениями до описания которых нет никакого внятного средства на подобии UML`а.
В сложных проектах нам нужна чёткая структура. Нужны пакеты, как в более серьёзных языках программирования. И вот, недавно придумал простое решение - в качестве пакетов использовать пользовательские объекты Тогда вместо оператора "import" можно использовать "with". И всё становится на свои места. Действительно, конструкция
...что бы при отправке формы все ссылки блокировались во избежание двойного нажатия или нажатия на какую-нибудь ссылку... Конструкцией for..in любая среда разработки может узнать все методы любого объекта. Да и мы можем прогнать простейший скриптик, который всё это аккуратненько выведет в табличку... Конечно, при импорте большого количества библиотек, нагромождение вложенных with`ов будет смотреться не очень, но это это всё-таки лучше, чем всё в одной каше. Что скажете? -------------------- |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Что такое пакеты? Классы? наследование?
А вот это не напоминает вам "нормальную" систему описания наследования? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Нет, пакеты - это не классы и не наследование. Пакеты - это пакеты. Ещё их называют namespaces - в C++ они именуются так. Добавлено через 3 минуты и 16 секунд ну тоесть я не хочу сказать, что пакеты в Java аналогичны namespaces в C++ - там есть отличия, но не такие уж они значительные... -------------------- |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Можно в один объект слить все свойства нескольких и обозвать все это добро namespace'ом.
что-нибудь вроде
Чем не Namespace? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Zeroglif |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 644 Регистрация: 22.9.2005 Репутация: 28 Всего: 66 |
Скажу, что with в javascript реализован не лучшим образом, в принципе, и лучше обходить это дело стороной, я, честно говоря, вообще не представляю, каким образом with может помочь в борьбе с конфликтующими именами, скорее, наоборот...
Именно. Для примера на яхе работает что-то подобное, сначала большой и толстый объект, потом через функцию надстройки по требованию:
|
||||
|
|||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 5 Всего: 127 |
Zeroglif, спасибо. Наверное, этот способ действительно лучше. Вот только код малость запутанный... Я не увидел - как им в итоге пользуются?
-------------------- |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Да вот так
Это сообщение отредактировал(а) ksnk - 25.4.2007, 18:26 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |