Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Моя первая попытка в ООП (https://javascript.ru/forum/project/32003-moya-pervaya-popytka-v-oop.html)

PashPP 29.09.2012 11:16

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

Критика, рассказы как делать нельзя, как делать нужно, что я сделал не так жутко приветствуются.
http://learn.javascript.ru/play/MEPC1b

забавную ссылку мне движок выдал

Dim@ 29.09.2012 15:52

PashPP,
по идее неплохо, (даже очень) но код трудно расширяем, примеры:
if (imgWid) im.style.width= imgWid +'px';

пиксели лучше не трогать, вдруг чувак захочет относительные еденицы измерения (приколисты и прочие мудрецы css не надо кричать что пиксели относительные - это так, но с разными компами фигня будет) em-ы к примеру или проценты
var closeButton = document.createElement('DIV');
    closeButton.className = 'closeButton';
    closeButton.style.width = 26 + 'px';
    closeButton.style.height = 15 + 'px';
    closeButton.style.cursor = 'pointer';
    closeButton.innerHTML = 'X';
    closeButton.style.textAlign = 'center';
    closeButton.style.lineHeight = '15px';
    popup.appendChild(closeButton);

собсно, тоже самое
можно ещё найти там, но мне сейчас лень копаться в коде

По-моему неплохо, тем более с ООП, но расширять код будет очень трудно :)

PashPP 29.09.2012 16:15

Dim@,
Почему трудно будет расширять?

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

melky 29.09.2012 16:57

Цитата:

Сообщение от PashPP (Сообщение 207226)
Dim@,
Почему трудно будет расширять?

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

ещё учиться и учиться

например,
var closeButton = document.createElement('DIV');
    closeButton.className = 'closeButton';
    closeButton.style.width = 26 + 'px';
    closeButton.style.height = 15 + 'px';
    closeButton.style.cursor = 'pointer';
    closeButton.innerHTML = 'X';
    closeButton.style.textAlign = 'center';
    closeButton.style.lineHeight = '15px';
    popup.appendChild(closeButton);

легко переходит в insertAdjacentHTML


остальное смотреть не стал - дохрена кода и лень. он какой-то кусачий, неприятно его читать.

один супер метод с повторяющимися операциями - код должен выглядеть, как текст, написанный на английском.

Dim@ 29.09.2012 17:08

PashPP,
Цитата:

Сообщение от PashPP
Почему трудно будет расширять?

Потому что если его увеличивать, то надо дать абсолютное владение надо этим окошком, то есть нужно что бы было менять его дизайн (если у сайта темный дизайн, эти окна будут мягко говоря "не к месту"), его кнопки, drag & drop и прочее, но для этого нужен нормальный API который трудно получить перерабатывая то что ты написал, легче переписать это ;)

PashPP 29.09.2012 17:09

Цитата:

Сообщение от melky
insertAdjacentHTML

Хм, когда листал учебник эту фигню был как-то пропустил. Надо будет запомнить, спасибо.

Цитата:

Сообщение от melky
он какой-то кусачий, неприятно его читать.

Пичаль же.

PashPP 29.09.2012 17:12

Dim@,
Эм. Но ведь там все берется с цсс, если не указанно явно а дж.
Кнопочка одна только полностью в скрипте дизайнится.

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

Dim@ 29.09.2012 17:17

Цитата:

Сообщение от PashPP
я и не планировал его особо расширять, если будет желание - добавить плавное скрытие/автоскрытие да и все.

маловато, но надо (впрочем и мне) писать код легко расширяемый, ну или нормально расширяемый
Цитата:

Сообщение от PashPP
Эм. Но ведь там все берется с цсс, если не указанно явно а дж.

тоже не то, есть разные виды окошек, а у тебя один единственный класс вставлен
:)

PashPP 29.09.2012 17:42

Цитата:

Сообщение от Dim@
маловато, но надо (впрочем и мне) писать код легко расширяемый, ну или нормально расширяемый

Согласен. Но хрен его знает, что это значит.
Вот пример бы, что ли.

Цитата:

Сообщение от Dim@
тоже не то, есть разные виды окошек, а у тебя один единственный класс вставлен

Разве этого мало? Один класс - один стиль оформления. Разве не логично?

Dim@ 29.09.2012 20:09

PashPP,
Цитата:

Сообщение от PashPP
Разве этого мало?

мало, есть разница между окном предупреждения и заполнением номера?
Цитата:

Сообщение от PashPP
Но хрен его знает, что это значит.

это значит код, который легче дописывать, нежели переписывать, пример с которым я столкнулся когда писал "Перехватчик на JavaScript":
я при движении цели писал абсолютное значение, а мест куда можно двигаться 9 значений, то есть постоянно на развилках if else писал абсолютное значение 1, когда пришлось сделать движение на две и болеее клетки я понял что нужно было писать на развилках не 1, а переменную которая содержало в себе 1 или 2 или 3 и т.д. так это облегчило бы мне задание - это пример мягко говоря плохой, но тем не менее пример :)

PashPP 29.09.2012 21:04

Цитата:

Сообщение от Dim@
мало, есть разница между окном предупреждения и заполнением номера?

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

Цитата:

Сообщение от Dim@
я при движении цели писал абсолютное значение, а мест куда можно двигаться 9 значений, то есть постоянно на развилках if else писал абсолютное значение 1, когда пришлось сделать движение на две и болеее клетки я понял что нужно было писать на развилках не 1, а переменную которая содержало в себе 1 или 2 или 3 и т.д. так это облегчило бы мне задание - это пример мягко говоря плохой, но тем не менее пример

Эм. Ладно, я понял, что мой код говно, но на другое я и не надеялся.
Так что спасибо.

Dim@ 29.09.2012 21:26

Цитата:

Сообщение от PashPP
Ладно, я понял, что мой код говно, но на другое я и не надеялся.

Код не говно, просто есть куда двигаться:)

nerv_ 06.10.2012 16:34

Цитата:

Сообщение от melky
код должен выглядеть, как текст, написанный на английском

хорошее сравнение :)

PashPP,
Цитата:

displayWin: function(inner, wid, hei, left, top) {
когда аргументов много, лучше передавать объект

Цитата:

var w, h;
//если параметр передается напрямую в функцию - брем его. нет - с прототипа
wid ? w = wid : w = this.winWidth;
hei ? h = hei : h = this.winHeight;
http://learn.javascript.ru/class-extend

Цитата:

var closeButton = document.createElement('DIV');
closeButton.className = 'closeButton';
closeButton.style.width = 26 + 'px';
closeButton.style.height = 15 + 'px';
closeButton.style.cursor = 'pointer';
closeButton.innerHTML = 'X';
closeButton.style.textAlign = 'center';
closeButton.style.lineHeight = '15px';
вот поэтому во фреймворках имеют место быть цепочечные вызовы.

все var выносятся вверх. Вообщем, читай JavaScript. Шаблоны [Стоян Стефанов]

ниндзя
Цитата:

left || top ? popup.style.position = 'absolute' : popup.style.position = 'relative';

вообще, как правило, стили в коде не пишутся. Только классы присваиваются.

Shaci 06.10.2012 17:56

Цитата:

Сообщение от nerv_
displayWin: function(inner, wid, hei, left, top) {

когда их 5 - можно оставить и без объекта по идее

PashPP 06.10.2012 18:18

Цитата:

Сообщение от nerv_
Сообщение от melky
код должен выглядеть, как текст, написанный на английском

хорошее сравнение

Тобишь, я этой цели не достиг? Если не лень ответить, то где и почему?


Цитата:

Сообщение от nerv_
http://learn.javascript.ru/class-extend

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

Цитата:

Сообщение от nerv_
вот поэтому во фреймворках имеют место быть цепочечные вызовы.

И что это?

Цитата:

Сообщение от nerv_
JavaScript. Шаблоны [Стоян Стефанов]

Уф. У меня в планах сколько всего прочитать. А я даже фленагана еще наполовину не осилил.

Цитата:

Сообщение от nerv_
вообще, как правило, стили в коде не пишутся.

Знаю, почему-то подумал, что кнопка закрыть как бы служебная и меняться не должна. Сейчас изменил мнение: "А какого фига не должна?".

nerv_ 08.10.2012 01:50

Цитата:

Сообщение от PashPP
Хорошая ссылка, надо будет повторить. Но как это могло там помочь?

приношу свои извинения ) Попутал с jQuery.extend :) Смысл примерно такой.

Цитата:

Сообщение от PashPP
И что это?

http://learn.javascript.ru/play/fngipb

Цитата:

Сообщение от Shaci
когда их 5 - можно оставить и без объекта по идее

обязательно помнить порядок аргументов, а когда их много это проблематично. Ну или IDE с этим справляется. Не знаю, не использую ) Кстати, у него там даже сокращения переменных не айс
Цитата:

wid, hei


Часовой пояс GMT +3, время: 00:43.