Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос именования в JS 
:(
    Опции темы
dm9
Дата 22.3.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: 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
PM MAIL ICQ   Вверх
dm9
Дата 22.3.2006, 02:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


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

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



Я попробовал нарисовать структуру системы в Rational Rose. Не уверен, что это средство идеально подходит под работу с JS, но другого не дано.

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

Первое - "Класс". Это аналог класса из ООП. То есть набор некоторых методов и свойств. Основная задача "класса" - что-то ДЕЛАТЬ. Например, если я хочу создать всплывающую подсказку, я могу создать следующую структуру.

Код

function HintClass() {
    this.show = function() {}
    this.hide = function() {}
    this.hideTime = 300;
}


Как это отобразить в рамках RR - думаю, ясно.

Если же я хочу создать некоторое хранилище данных, то это второй тип объектов. Он аналогичен паскалевской Записи - record (хоть убейте - не помню, как это называется в Си). Основная задача "Записи" - ХРАНИТЬ данные. Возможно также проводить с этими данными какие-то операции.

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

Код

function TextItemData() {
    this.text = "";
    this.url = "";
    this.canCache = true;
    this.highlightWord = function() {} // Операция над текстом!!!
}


Как отобразить это в рамках RR - думаю, понятно тоже.

Таким образом, мы получаем два типа элементов на ClassDiagram: "Обыкновенные Классы" и "Записи". У первых для понятности дописываем суффикс "Class", у вторых - "Data". Возможно, для удобства стоит использовать другие суффиксы или префиксы?

И у меня возникает очень важный вопрос - много ли я теряю, когда пытаюсь запихать JS в рамки того, что предоставляет Class Diagram в Rational Rose?

PM MAIL ICQ   Вверх
Sardar
Дата 22.3.2006, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(dm9 @ 22.3.2006, 01:59 Найти цитируемый пост)
И у меня возникает очень важный вопрос - много ли я теряю, когда пытаюсь запихать JS в рамки того, что предоставляет Class Diagram в Rational Rose?

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

По вопросу, это ж сколько нужно держать глобальной инфы что бы пространство имён потребовалoсь? smile
Обычно у меня глобально только пара настроек, всё остальное "храниться" в аргументах функций.
Функций иногда бывает много. Но что бы это стало проблемой не было. Пакетов в JS тоже нет, может в будущем будет.

Если моделишь скрипты в RR, то и подходи к JS как к ООП языку, приёмы "подгонки топором" JS'a к ООП обсуждались много раз. Потеряеться краткость, но это редко было проблемой. Префикс T в JS не уместен, т.к. типов не дефинируем. Не ясен смысл *Data из твоего примера, операции над собой ведь имеет, следовательно это полноценный обьект.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
dm9
Дата 22.3.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


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

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



Цитата(Sardar @ 22.3.2006, 18:50 Найти цитируемый пост)
Не ясен смысл *Data из твоего примера


Это определение данных (в первую очередь) и действий, которые я могу на ЭТИМИ данными выполнять. Например, я создаю тип "точка". У меня будет три переменные (x, y, z) и несколько методов оперирования с этими данными. Например, я могу создать метод, переводящий точку в другую систему координат (на входе ф-ции - матрица перехода к др. базису). Пример немного притянутый за уши, конечно...

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

Возможно, я усложняю?

PM MAIL ICQ   Вверх
Sardar
Дата 23.3.2006, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

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



Цитата(dm9 @ 22.3.2006, 17:05 Найти цитируемый пост)
Возможно, я усложняю?

Угу smile

Класс это нечто содержащее состояние и операции для изменения состояния, на этом строиться логика. Есть обьект, состоящий из точек, с точками можно работать по отдельности. В итоге точки образуют NURBS или полигональную поверхность, которую можно сгладить и т.д. Но по моему это не есть данные, это по прежнему обьект, состоящий из точек и допустим стека модификаторов, определяющих внешний вид, ну ещё и материал, что в свою очередь тоже сложная цепь материалов и эффектов. Перебрал с 3DS Max'ом... smile

Если тебе это нравиться, делай, но большинство народа в JS не особо поддерживают идею особых имён для классов и типов данных, мало того общего coding style тоже по моему нет.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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