Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   код в классах (http://www.flasher.ru/forum/showthread.php?t=166222)

allanon85 31.08.2011 20:52

код в классах
 
Приветствую.
Вопрос такой. Зачем писать код в классах, а не, например, в кадрах?
просьба не отправлять, я там уже был.. Но все равно понять не получается. Где то пишут одно, где то другое. Некоторые просто пишут что так надо. Некоторые пишут что так надо потому что код в кадрах может работать не корректно, но я такого не встречал, по этому верится с трудом.
Хотелось бы конкретные данные. Если возможно с примерами одного и того же кода отдельно и в кадре.

Конкретный пример. В чем удобство цеплять события для кнопок через классы.

Код AS3:

package main {
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.events.MouseEvent;
 
    public class myButton extends MovieClip {
          public function myButton() {
                addEventListener(MouseEvent.CLICK, onClick);
          }
          private function onClick(evt:MouseEvent):void {
                trace("Click");
          }
    }
}

приведенный выше пример цепляем к клипу. и как бы работает.
аналог этого кода в кадре

Код AS3:

mc.addEventListener(MouseEvent.CLICK, onClick);
function onClick(evt:MouseEvent){
    trace("Click");
}

можно заметить что букв меньше.

очевидное преимущество первого кода в том что если кнопок много, то можно повесить класс на все. Во втором же случае к каждой кнопке надо будет прописывать событие(тем или иным способом).

Но это только если кнопок много. а если она одна, в чем преимущество?


Другой пример. В разных программах может быть использован примерно один и тот же код. чтобы не писать его дважды, надо либо копипастить, либо можно написать этот код в классе.
Допустим тот же пример с кнопкой. в одной программе при нажатии кнопки произойдет одно действие, в другом примере другое. Если бы действие было одно то да, удобнее. Но чаще всего действие отличается. То есть надо будет расширять класс. В итоге можно получить огромный класс со всякими вариантами действия.
Чем это лучше того чтобы написать действие для конкретной программы в том же кадре, чем плох копипаст?

Единственный плюс на мой взгляд это если кода много. Удобнее работать если каждая часть в отдельном файле.

КорДум 31.08.2011 20:54

Вам знакомы три буквы ООП? Так вот, AS3 — ООП язык.

Bgg 31.08.2011 20:55

Цитата:

Сообщение от allanon85 (Сообщение 1027221)
Единственный плюс на мой взгляд это если кода много. Удобнее работать если каждая часть в отдельном файле.

Нуда, код для баннеров можно и в кадре писать.

saikspaik 31.08.2011 20:56

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

allanon85 31.08.2011 21:03

КорДум, т.е. ваш ответ "так надо" ?

Маленькая просьба. Если у вас нет желания объяснить, либо не можете объяснить, ничего не пишите.
Не будет ответов, я как бы не обижусь.
Я не говорю что писать в классах не надо, я их использую, но только там где считаю это необходимым удобным. И не понимаю для чего люди используют их везде.

КорДум 31.08.2011 21:06

Мой ответ: это ООП.
Объяснить?

allanon85 31.08.2011 21:10

КорДум, объясните как это связано с вопросом

КорДум 31.08.2011 21:11

В кадрах Вы не получите все прелести ООП, это же очевидно.

dimarik 31.08.2011 21:17

Просто запомните эту страшшшную фразу "код в кадрах".

Сложно разрабатывать.
Трудно сопровождать.
Невозможно использовать системы управления версиями.

allanon85 31.08.2011 21:18

Это очевидно, я согласен. Но если вам нужна программа которой не нужны прелести?. зачем такую программу писать в классах.
Возможно я в начале не совсем правильно задал вопрос.

Вообще вопрос возник потому что я с одним флешером поспорил. Он написал программу и я. одну и ту же с одним функционалом. он написал в классах, я в кадре. Повторюсь программы работают идентично. Но он считает что его программа сделана правильно, а моя нет потому что я писал в кадре.

Вот отсюда вопрос. Есть ли разница? Аналогичное я видел и на этом форуме, что людям советуют писать в классах, хотя на мой взгляд то что им надо написать, писать в классе нет никакого смысла.

dimarik 31.08.2011 21:22

Действительно, нет смысла. Я бы отказал вам в вакансии.

allanon85 31.08.2011 21:31

dimarik, не могли бы вы конкретно пояснить в чем я не прав?

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

ЗЫ: Работу я не ищу.

dimarik 31.08.2011 21:39

allanon85, был такой вариант, олицетворяющий несложные приложения.

Цитата:

Сообщение от Bgg (Сообщение 1027224)
Нуда, код для баннеров можно и в кадре писать.

Я не против того, чем вы там в одиночестве занимаетесь. В первом своем посте я ясно дал понять о командной разработке.

Silicium 31.08.2011 21:51

По моему, если хочешь, и считаешь целесообразным - пиши в кадрах. Но если у тебя вдруг начали возникать вопросы, типа "а как вот-это сделать" или "а почему вот-это не работает", то первое, что нужно сделать - перестать писать в кадрах.

allanon85 31.08.2011 22:00

Silicium, Подобные вопросы могут возникнуть и если у человека руки кривые либо просто недостаточно знаний. Как подобные вопросы связаны с тем находится код в классах или в кадре? Есть конкретные примеры не рабочего кода в кадре?

К тому же если верить этому
http://flasher.ru/forum/showpost.php...1&postcount=33
то код в кадре все равно преобразуется в классовый.

dimarik, командную разработку можно добавить в плюс к классам. Но это опять же с крупными проектами.

DJDrugsounD 31.08.2011 22:04

если работаешь один и не на дядю то какая разница где писать, главное чтобы самому было проще и удобней.
и вот вам такой примерчик, пишу 3D игру с онлайном в реалтайме, работы уже сделал много но это только половина, не использовал не одного класса всё в кадрах.
и такой вопрос, зачем мне переходить на классы если и так мне всё понятно, всё удобно, и всё шикарно работает без малейшей запинки?

dimarik 31.08.2011 22:48

Цитата:

Сообщение от allanon85 (Сообщение 1027252)
dimarik, командную разработку можно добавить в плюс к классам. Но это опять же с крупными проектами.

Обычно я такие темы игнорирую, на вам страшно повезло.

Цитата:

Зачем писать код в классах, а не, например, в кадрах?
Я давно нашел для себя ответ. С течением времени найдите для себя правильный ответ сами. Все откликнувшиеся старались помочь вам в этом.

GBee 31.08.2011 23:10

allanon85, предложите другу спор на расширение возможностей ваших приложений.

allanon85 31.08.2011 23:11

Хм. я уже писал выше что не обижусь если мне "не повезет".

Суть вопроса не в том что классы хуже или лучше, а в том какая между ними разница. Практическая разница.
Я использую классы, причем не только во флеше. Но я не вижу смысла использовать классы там где по моему в них нет необходимости, как например в тех же баннерах. Вопрос в том правильно ли это?.

обратите внимание на ответ выше
Цитата:

Но если у тебя вдруг начали возникать вопросы, типа "а как вот-это сделать" или "а почему вот-это не работает", то первое, что нужно сделать - перестать писать в кадрах.
Не говорит ли этот ответ о том что код в кадрах работает хуже?. а такое я видел не один рас. В статьях, в учебниках. Но при этом никаких конкретных пояснений.

Вот например вырезка из статьи
Цитата:

Лучше забудьте о панели Actions, вообще. Теперь всё держится на классах, а писать код в кадрах клипов просто опасно....
Т.к. он иногда неправильно компиллируется.
Я с таким никогда не сталкивался. у меня всегда все работало, а если не работало то из за меня.

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

Вот я и прошу поделиться этими причинами, если они есть. А если нет, то тут действительно только время может изменить.


GBee, возможность расширения не стояла как условие. Условие было сделать программу с такими то функциями. не имея ничего под рукой. И кто быстрее. Я был быстрее но как говорит мой противник я сделал программу не правильно, при этом не может сказать почему.. просто потому что "так надо".

GBee 31.08.2011 23:20

Цитата:

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

allanon85 31.08.2011 23:45

GBee, у меня такое было и не однократно. Уточняю что мы говорим не о большой проге, а о тех где я использую код в кадрах.

Разница только в одном. Если код написан в разных классах, где каждый файл отвечает за свою сторону, то возможно будет проще найти то что надо и изменить. я говорю возможно т.к. многие люди пишут по разному. если брать мой код, то я в нем всегда разберусь не зависимо от того в кадре он или в классе.

в остальном же разницы никакой. В первом посте я показал пример с кнопкой. код реализации идентичен. то же самое будет и тут. следовательно это займет примерно одно и то же время.

Другое дело если прога изначально не была рассчитана на то действие которое требуется. В итоге все равно придется либо переделывать часть, либо все.

Bgg 31.08.2011 23:54

Черт, может тоже начать писать в кадрах? Никаких классов, все в одном файле. Видешь буковку "а" на кадре - значит там мой код! Жмешь F9, а там удобный поиск, автокомплит! Да и если порисовать захотелось, то жмешь опять F9 и рисуешь!

GBee 01.09.2011 00:21

Цитата:

GBee, у меня такое было и не однократно. Уточняю что мы говорим не о большой проге, а о тех где я использую код в кадрах
Смысл темы тогда не ясен. Если вы понимаете всё. И все сводится только к удобству для вас, то флаг вам в руки. Заказчику в конечном счете все равно (в большинстве случаев), если все работает и сдано в срок. А в команде вы, как я понял, не работаете.

Что до вашего друга, так пусть он доказывает, что ваша прога неправильная. Бремя доказательства висит на обвинителе.

-De- 01.09.2011 00:21

Навигация по кадрам - хуже навигации по классам.
Есть ряд багов, которые возникают, только если писать в кадрах (да, можно писать в кадрах так, что их не будет). Что-то вроде даже похоже на баги IDE/компилятора. Проф. программисты не любят отвечать на вопросы, если код явно в кадрах (плюс, см. выше, иногда проблемы не было бы, если бы он был в классах).
А главное - писать в кадрах = только в IDE.
Которое не умеет incremental build, который раз в 10 обычно ускоряет компиляцию. И многое другое. Например, там надо БОЛЬШЕ писать кода руками, ибо автодополнение лучше и много что генерируется автоматически.
PS: для мелких проектов да, проще не запускать ничего кроме IDE, для баннеров например и не парясь писать в кадрах.
PPS: я сделал пару весьма жирных проектов с кодом в кадрах. Там адЪ.

TanaTiX 01.09.2011 00:27

allanon85, ваше "удобство", это null, если вы пытаетесь кого-то в этом убедить. Маленький проект. Замечательно. А что для вас маленький проект? Для меня баннер, единственным функционалом которого является переход на другую страницу и возможность остановить анимацию в конце (вышеупомянутый stop)
Вы прекрасно ориентируетесь в своем коде? Я когда писал код в кадрах тоже прекрасно ориентировался и все работало и компилилось правильно. А потом я попробовал классы, попробовал ФД. И стало понятно, что в классах удобнее (и это в данном случае не субъективное ощущение, а скорость разработки, вышеуказанный автокомплит и многие другие плюшки + собственно субъективное удобство), а раньше в случае необходимости (а в реальном проекте такая необходимость может возникнуть в любой момент - и то, что вы считали небольшим проектом, почему-то стремиться к бесконечности) я просто лепил костыли. Да, с костылями можно неплохо передвигаться, а инвалиды-марафонцы, что преодолевают дистанцию на инвалидных колясках, даже имеют лучшие результаты, чем здоровые спортсмены.
Никто вас не заставляет писать код в классах. Вы можете продолжать лепить костыли (я в их наличии не сомневаюсь) и ускорять скорость разработки за счет клавиатурных тренажеров. Не слушайте никого, если вы так уверены в своей правоте.

i.o. 01.09.2011 00:46

Цитата:

Вы нашли ответ. Но ведь этот ответ на чем то основывался. Он мог основываться только на том что вам это удобнее, а могли быть и какие то причины, с которыми вы сталкивались а мне еще не довелось.
Ну вам уже сказали ответ еще вверху - ООП (Объектно-ориентированое Программирование). В кадрах вы имеете только Объектно-базированое кодерство.

А причины просты (про кадры):
- нельля объявить класс/интерфейс
- нельзя создать свойства
- полное отсутствие модификаторов доступа - public/protected/private/static/final и свои неймспейсы
- нельзя инкапсулировать переменные/методы (см выше про private)
- отсутствие реализации наследования
- отсутствие реализации полиморфизма
- нужно иметь Flash CS* IDE, чтобы даже просто увидеть код
- нельзя откомпилировать сий код в другом IDE
- нет автокомплита для кода в соседнем кадре

да и вообще:
- со временем сами запутаетесь в своих кадрах.
- это быдлокод, даже при всем старании, на AS3 это быдлокод.
- но для баннеров покатит и прочей хрени :)

КорДум 01.09.2011 00:55

Цитата:

Не слушайте никого, если вы так уверены в своей правоте.
Что и делает человек, начиная с первого своего поста в этой теме.
Это не Вы? Хотя нет, тот ратовал за кадры и только кадры. Не хочется копировать фразу, но посмотрите в той теме мой последний пост.

NikolyA 01.09.2011 01:18

когда появится большой проект и ты будешь лазить по одному бедному кадру из 20000 строк, ты поймешь свою ошибку, когда код лежит в отдельных классах, то проще открыть и подправить нужный класс, чем всю эту беду ленточную

TanaTiX 01.09.2011 01:26

КорДум, вы не поняли иронии. А автора темы никто насильно ни к чему не обязывает.

Silicium 01.09.2011 01:32

Я вообще не понимаю сути спора. Вы же почему-то выбираете Flash, AS3. Зачем? Пишите на Паскале, как Вам такое предложение?...
Есть инструмент, есть подход, и есть определенные правила, как следует использовать этот инструмент. Для AS3, как для ООП языка - это классы. Бензопилой тоже можно пилить деревья, не заливая туда бензин. Как известно из анекдота - у Шварценегера это вышло не хуже.

КорДум 01.09.2011 01:36

Цитата:

КорДум, вы не поняли иронии.
Да, я просто устал от третьей (третьей ли?) подобной темы =)

allanon85 01.09.2011 01:44

Добавлю плюсы к классам от -De- насчет IDE, проф программистов

i.o., подразумеваются программы которые вы называете "прочей хрени". Т.е. то что вы перечислили как бы и не надо.

КорДум, По моему я уже дал понять что не имею ввиду крупные программы. Кстати офтоп, вас случайно не Александр зовут?

КорДум 01.09.2011 01:48

Цитата:

КорДум, По моему я уже дал понять что не имею ввиду крупные программы. Кстати офтоп, вас случайно не Александр зовут?
На самом деле, небольшие проекты (больше баннера которые) лучше писать в классах, ибо на самом деле FD приятнее по всем аспектам, нежели FlashIDE. Да, зовут, а что?

allanon85 01.09.2011 01:53

КорДум,
не пользовался FD. допускаю что он удобнее, но мне чаще приходится работать с дизайнерами которым IDE ближе.
фотка на аватарке знакомая, в Урае не жили?

КорДум 01.09.2011 01:55

Цитата:

фотка на аватарке знакомая, в Урае не жили?
нет =)
Цитата:

не пользовался FD. допускаю что он удобнее, но мне чаще приходится работать с дизайнерами которым IDE ближе.
Можно использовать FlashIDE как компилятор (висит на фоне), а писать в FD. Я писал несколько статей в блоге про FD.

allanon85 01.09.2011 02:02

хм. двойник похоже), хотя я его давно не видел.
за ссылку спс, посмотрю.

i.o. 01.09.2011 10:13

Цитата:

i.o., подразумеваются программы которые вы называете "прочей хрени". Т.е. то что вы перечислили как бы и не надо.
Для этого Есть AS1 - там все пишется в кадрах - вот и пишите на нем.
Если Вам это не надо - зачем тут вообще подобные вопросы задаете? Пишите и не парьтесь. Кроме Вас никто не увидит, что вы там калякаете в кадрах:)

Psycho Tiger 01.09.2011 14:57

Это удивительно. Большие проекты и проекты, у которых ТЗ может хоть чуточку изменится проще писать в классах. Но если не изменится совсем ничего то, несомненно, проще всего творить в кадрах.
Вы себя то слышите?

А ещё, в моём мире, не было ни одного проекта, даже с полностью фиксированным и оговоренным ТЗ, в котором в конечном счете заказчик не просил "вот это подвинуть, а это поменять, не нравится".

Кстати, попробуйте написать программу без намеков на ООП в кадрах. Это без оператора new. Если не получится — зачем быть пародией на ООП, если можно его использовать?
Но дело Ваше. Кадры — это по взрослому.

Newred 02.09.2011 04:26

тролинг тема детектед...
А в чём вы пишите код?
Попробуйте Flash Builder или Flash Develop
В своё время, как только сел за Flash Builder, подобные вопросы отпали сразу.
Разбирал как то игру для вконтакте(клон мортал комбата) где было 12 персонажей, и у каждого было по 2 фаталити, которые грузились отдельными swf.
задание было сделать кнопку вкл/выкл звука.

и вместо плюшек:
Код AS3:

if(music) //music:Boolean
SoundMixer.stopAll();

меня ждало долгое ковыряние в кадрах. вообщем быдлокоду оправдания нет.


Часовой пояс GMT +4, время: 15:11.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.