![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Здравствуйте.
Меня интересует вопрос именования в Java Script. Я не написал, именования чего, так как в этом и есть основная суть вопроса. У меня есть набор функций и переменных, которые логически можно объединить в группу. И мне хочется объединить их в группу - для большей ясности скрипта. Практически в любом языке это называется "Класс", и есть определённые стандарты именования. Если я пишу в Delphi, я называю класс TForm1 или TfrmMain - но всегда есть префикс T. Если я пишу на PHP, я называю классы DBClass, QueryClass, XMLClass. Я планирую оформить данную структуру так: function myFirstLib () { this.attr1 = 1; this.firstAction = function () { ... } } var firstLib = new myFirstLib (); Во-первых, стоит ли это делать так, или стоит сделать это как-то другими методами? И основной вопрос. Как же мне назвать этот myFirstLib, отражая тот факт, что это именно... короче говоря, класс (ну да, понимаю, в ЯваСкрипте классом что-то называть не совсем коректно...) Есть ли какие-то общепринятные правила именования (сам я с таким не сталкивался) для скриптов? Это сообщение отредактировал(а) dm9 - 22.3.2006, 01:30 |
|||
|
||||
| dm9 |
|
||||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Я попробовал нарисовать структуру системы в Rational Rose. Не уверен, что это средство идеально подходит под работу с JS, но другого не дано.
Пришёл к выводу, что все объекты можно разделить на два типа. Первое - "Класс". Это аналог класса из ООП. То есть набор некоторых методов и свойств. Основная задача "класса" - что-то ДЕЛАТЬ. Например, если я хочу создать всплывающую подсказку, я могу создать следующую структуру.
Как это отобразить в рамках RR - думаю, ясно. Если же я хочу создать некоторое хранилище данных, то это второй тип объектов. Он аналогичен паскалевской Записи - record (хоть убейте - не помню, как это называется в Си). Основная задача "Записи" - ХРАНИТЬ данные. Возможно также проводить с этими данными какие-то операции. Например, я создаю класс для хранения подгруженных каким-то образом с сервера текстов (реальная, собственно, задача).
Как отобразить это в рамках RR - думаю, понятно тоже. Таким образом, мы получаем два типа элементов на ClassDiagram: "Обыкновенные Классы" и "Записи". У первых для понятности дописываем суффикс "Class", у вторых - "Data". Возможно, для удобства стоит использовать другие суффиксы или префиксы? И у меня возникает очень важный вопрос - много ли я теряю, когда пытаюсь запихать JS в рамки того, что предоставляет Class Diagram в Rational Rose? |
||||
|
|||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Нет. Ну разве что не эффективным с точки зрения потребления памяти выходит код, если методы обьекта дефинировать в конструкторе, но это не страшно. По вопросу, это ж сколько нужно держать глобальной инфы что бы пространство имён потребовалoсь? Обычно у меня глобально только пара настроек, всё остальное "храниться" в аргументах функций. Функций иногда бывает много. Но что бы это стало проблемой не было. Пакетов в JS тоже нет, может в будущем будет. Если моделишь скрипты в RR, то и подходи к JS как к ООП языку, приёмы "подгонки топором" JS'a к ООП обсуждались много раз. Потеряеться краткость, но это редко было проблемой. Префикс T в JS не уместен, т.к. типов не дефинируем. Не ясен смысл *Data из твоего примера, операции над собой ведь имеет, следовательно это полноценный обьект. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| dm9 |
|
|||
![]() Дмитрий Копытин ![]() ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 3876 Регистрация: 22.7.2002 Где: Москва Репутация: нет Всего: 137 |
Это определение данных (в первую очередь) и действий, которые я могу на ЭТИМИ данными выполнять. Например, я создаю тип "точка". У меня будет три переменные (x, y, z) и несколько методов оперирования с этими данными. Например, я могу создать метод, переводящий точку в другую систему координат (на входе ф-ции - матрица перехода к др. базису). Пример немного притянутый за уши, конечно... Основное отличие *Data от *Class именно в том, что в *Data содержатся данные и операции применяются к своим же данным. А *Class - это набор методов, работающих "наружу". Например, я могу создать класс, отвечающий за интерактивныю подгрузку данных. Или класс, который будет создавать всплывающие подсказки. Возможно, я усложняю? |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Угу Класс это нечто содержащее состояние и операции для изменения состояния, на этом строиться логика. Есть обьект, состоящий из точек, с точками можно работать по отдельности. В итоге точки образуют NURBS или полигональную поверхность, которую можно сгладить и т.д. Но по моему это не есть данные, это по прежнему обьект, состоящий из точек и допустим стека модификаторов, определяющих внешний вид, ну ещё и материал, что в свою очередь тоже сложная цепь материалов и эффектов. Перебрал с 3DS Max'ом... Если тебе это нравиться, делай, но большинство народа в JS не особо поддерживают идею особых имён для классов и типов данных, мало того общего coding style тоже по моему нет. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |