![]() |
код в классах
Приветствую.
Вопрос такой. Зачем писать код в классах, а не, например, в кадрах? просьба не отправлять, я там уже был.. Но все равно понять не получается. Где то пишут одно, где то другое. Некоторые просто пишут что так надо. Некоторые пишут что так надо потому что код в кадрах может работать не корректно, но я такого не встречал, по этому верится с трудом. Хотелось бы конкретные данные. Если возможно с примерами одного и того же кода отдельно и в кадре. Конкретный пример. В чем удобство цеплять события для кнопок через классы. Код AS3:
аналог этого кода в кадре Код AS3:
очевидное преимущество первого кода в том что если кнопок много, то можно повесить класс на все. Во втором же случае к каждой кнопке надо будет прописывать событие(тем или иным способом). Но это только если кнопок много. а если она одна, в чем преимущество? Другой пример. В разных программах может быть использован примерно один и тот же код. чтобы не писать его дважды, надо либо копипастить, либо можно написать этот код в классе. Допустим тот же пример с кнопкой. в одной программе при нажатии кнопки произойдет одно действие, в другом примере другое. Если бы действие было одно то да, удобнее. Но чаще всего действие отличается. То есть надо будет расширять класс. В итоге можно получить огромный класс со всякими вариантами действия. Чем это лучше того чтобы написать действие для конкретной программы в том же кадре, чем плох копипаст? Единственный плюс на мой взгляд это если кода много. Удобнее работать если каждая часть в отдельном файле. |
Вам знакомы три буквы ООП? Так вот, AS3 — ООП язык.
|
Цитата:
|
Когда пишешь что-то более менее сложное, то писать код в кадрах оказывается очень неудобно.
Ну а если тебе просто написать в баннере stop() в последнем кадре, то класс тут конечно и не нужен. |
КорДум, т.е. ваш ответ "так надо" ?
Маленькая просьба. Если у вас нет желания объяснить, либо не можете объяснить, ничего не пишите. Не будет ответов, я как бы не обижусь. Я не говорю что писать в классах не надо, я их использую, но только там где считаю это |
Мой ответ: это ООП.
Объяснить? |
КорДум, объясните как это связано с вопросом
|
В кадрах Вы не получите все прелести ООП, это же очевидно.
|
Просто запомните эту страшшшную фразу "код в кадрах".
Сложно разрабатывать. Трудно сопровождать. Невозможно использовать системы управления версиями. |
Это очевидно, я согласен. Но если вам нужна программа которой не нужны прелести?. зачем такую программу писать в классах.
Возможно я в начале не совсем правильно задал вопрос. Вообще вопрос возник потому что я с одним флешером поспорил. Он написал программу и я. одну и ту же с одним функционалом. он написал в классах, я в кадре. Повторюсь программы работают идентично. Но он считает что его программа сделана правильно, а моя нет потому что я писал в кадре. Вот отсюда вопрос. Есть ли разница? Аналогичное я видел и на этом форуме, что людям советуют писать в классах, хотя на мой взгляд то что им надо написать, писать в классе нет никакого смысла. |
Действительно, нет смысла. Я бы отказал вам в вакансии.
|
dimarik, не могли бы вы конкретно пояснить в чем я не прав?
Если я возьмусь написать крупную программу, я напишу ее в классах т.к. мне будет проще. Если я возьмусь писать программу которая в последствии будет редактироваться я опять же напишу в классах, и опять по одной причине, потом проще будет разбираться. Но если я пишу мелкую программу которая просто будет висеть и никого не трогать, я напишу ее в кадре, потому что мне так проще. ЗЫ: Работу я не ищу. |
allanon85, был такой вариант, олицетворяющий несложные приложения.
Цитата:
|
По моему, если хочешь, и считаешь целесообразным - пиши в кадрах. Но если у тебя вдруг начали возникать вопросы, типа "а как вот-это сделать" или "а почему вот-это не работает", то первое, что нужно сделать - перестать писать в кадрах.
|
Silicium, Подобные вопросы могут возникнуть и если у человека руки кривые либо просто недостаточно знаний. Как подобные вопросы связаны с тем находится код в классах или в кадре? Есть конкретные примеры не рабочего кода в кадре?
К тому же если верить этому http://flasher.ru/forum/showpost.php...1&postcount=33 то код в кадре все равно преобразуется в классовый. dimarik, командную разработку можно добавить в плюс к классам. Но это опять же с крупными проектами. |
если работаешь один и не на дядю то какая разница где писать, главное чтобы самому было проще и удобней.
и вот вам такой примерчик, пишу 3D игру с онлайном в реалтайме, работы уже сделал много но это только половина, не использовал не одного класса всё в кадрах. и такой вопрос, зачем мне переходить на классы если и так мне всё понятно, всё удобно, и всё шикарно работает без малейшей запинки? |
Цитата:
Цитата:
|
allanon85, предложите другу спор на расширение возможностей ваших приложений.
|
Хм. я уже писал выше что не обижусь если мне "не повезет".
Суть вопроса не в том что классы хуже или лучше, а в том какая между ними разница. Практическая разница. Я использую классы, причем не только во флеше. Но я не вижу смысла использовать классы там где по моему в них нет необходимости, как например в тех же баннерах. Вопрос в том правильно ли это?. обратите внимание на ответ выше Цитата:
Вот например вырезка из статьи Цитата:
Вы нашли ответ. Но ведь этот ответ на чем то основывался. Он мог основываться только на том что вам это удобнее, а могли быть и какие то причины, с которыми вы сталкивались а мне еще не довелось. Вот я и прошу поделиться этими причинами, если они есть. А если нет, то тут действительно только время может изменить. GBee, возможность расширения не стояла как условие. Условие было сделать программу с такими то функциями. не имея ничего под рукой. И кто быстрее. Я был быстрее но как говорит мой противник я сделал программу не правильно, при этом не может сказать почему.. просто потому что "так надо". |
Цитата:
|
GBee, у меня такое было и не однократно. Уточняю что мы говорим не о большой проге, а о тех где я использую код в кадрах.
Разница только в одном. Если код написан в разных классах, где каждый файл отвечает за свою сторону, то возможно будет проще найти то что надо и изменить. я говорю возможно т.к. многие люди пишут по разному. если брать мой код, то я в нем всегда разберусь не зависимо от того в кадре он или в классе. в остальном же разницы никакой. В первом посте я показал пример с кнопкой. код реализации идентичен. то же самое будет и тут. следовательно это займет примерно одно и то же время. Другое дело если прога изначально не была рассчитана на то действие которое требуется. В итоге все равно придется либо переделывать часть, либо все. |
Черт, может тоже начать писать в кадрах? Никаких классов, все в одном файле. Видешь буковку "а" на кадре - значит там мой код! Жмешь F9, а там удобный поиск, автокомплит! Да и если порисовать захотелось, то жмешь опять F9 и рисуешь!
|
Цитата:
Что до вашего друга, так пусть он доказывает, что ваша прога неправильная. Бремя доказательства висит на обвинителе. |
Навигация по кадрам - хуже навигации по классам.
Есть ряд багов, которые возникают, только если писать в кадрах (да, можно писать в кадрах так, что их не будет). Что-то вроде даже похоже на баги IDE/компилятора. Проф. программисты не любят отвечать на вопросы, если код явно в кадрах (плюс, см. выше, иногда проблемы не было бы, если бы он был в классах). А главное - писать в кадрах = только в IDE. Которое не умеет incremental build, который раз в 10 обычно ускоряет компиляцию. И многое другое. Например, там надо БОЛЬШЕ писать кода руками, ибо автодополнение лучше и много что генерируется автоматически. PS: для мелких проектов да, проще не запускать ничего кроме IDE, для баннеров например и не парясь писать в кадрах. PPS: я сделал пару весьма жирных проектов с кодом в кадрах. Там адЪ. |
allanon85, ваше "удобство", это null, если вы пытаетесь кого-то в этом убедить. Маленький проект. Замечательно. А что для вас маленький проект? Для меня баннер, единственным функционалом которого является переход на другую страницу и возможность остановить анимацию в конце (вышеупомянутый stop)
Вы прекрасно ориентируетесь в своем коде? Я когда писал код в кадрах тоже прекрасно ориентировался и все работало и компилилось правильно. А потом я попробовал классы, попробовал ФД. И стало понятно, что в классах удобнее (и это в данном случае не субъективное ощущение, а скорость разработки, вышеуказанный автокомплит и многие другие плюшки + собственно субъективное удобство), а раньше в случае необходимости (а в реальном проекте такая необходимость может возникнуть в любой момент - и то, что вы считали небольшим проектом, почему-то стремиться к бесконечности) я просто лепил костыли. Да, с костылями можно неплохо передвигаться, а инвалиды-марафонцы, что преодолевают дистанцию на инвалидных колясках, даже имеют лучшие результаты, чем здоровые спортсмены. Никто вас не заставляет писать код в классах. Вы можете продолжать лепить костыли (я в их наличии не сомневаюсь) и ускорять скорость разработки за счет клавиатурных тренажеров. Не слушайте никого, если вы так уверены в своей правоте. |
Цитата:
А причины просты (про кадры): - нельля объявить класс/интерфейс - нельзя создать свойства - полное отсутствие модификаторов доступа - public/protected/private/static/final и свои неймспейсы - нельзя инкапсулировать переменные/методы (см выше про private) - отсутствие реализации наследования - отсутствие реализации полиморфизма - нужно иметь Flash CS* IDE, чтобы даже просто увидеть код - нельзя откомпилировать сий код в другом IDE - нет автокомплита для кода в соседнем кадре да и вообще: - со временем сами запутаетесь в своих кадрах. - это быдлокод, даже при всем старании, на AS3 это быдлокод. - но для баннеров покатит и прочей хрени :) |
Цитата:
Это не Вы? Хотя нет, тот ратовал за кадры и только кадры. Не хочется копировать фразу, но посмотрите в той теме мой последний пост. |
когда появится большой проект и ты будешь лазить по одному бедному кадру из 20000 строк, ты поймешь свою ошибку, когда код лежит в отдельных классах, то проще открыть и подправить нужный класс, чем всю эту беду ленточную
|
КорДум, вы не поняли иронии. А автора темы никто насильно ни к чему не обязывает.
|
Я вообще не понимаю сути спора. Вы же почему-то выбираете Flash, AS3. Зачем? Пишите на Паскале, как Вам такое предложение?...
Есть инструмент, есть подход, и есть определенные правила, как следует использовать этот инструмент. Для AS3, как для ООП языка - это классы. Бензопилой тоже можно пилить деревья, не заливая туда бензин. Как известно из анекдота - у Шварценегера это вышло не хуже. |
Цитата:
|
Добавлю плюсы к классам от -De- насчет IDE,
i.o., подразумеваются программы которые вы называете "прочей хрени". Т.е. то что вы перечислили как бы и не надо. КорДум, По моему я уже дал понять что не имею ввиду крупные программы. Кстати офтоп, вас случайно не Александр зовут? |
Цитата:
|
КорДум,
не пользовался FD. допускаю что он удобнее, но мне чаще приходится работать с дизайнерами которым IDE ближе. фотка на аватарке знакомая, в Урае не жили? |
Цитата:
Цитата:
|
хм. двойник похоже), хотя я его давно не видел.
за ссылку спс, посмотрю. |
Цитата:
Если Вам это не надо - зачем тут вообще подобные вопросы задаете? Пишите и не парьтесь. Кроме Вас никто не увидит, что вы там калякаете в кадрах:) |
Это удивительно. Большие проекты и проекты, у которых ТЗ может хоть чуточку изменится проще писать в классах. Но если не изменится совсем ничего то, несомненно, проще всего творить в кадрах.
Вы себя то слышите? А ещё, в моём мире, не было ни одного проекта, даже с полностью фиксированным и оговоренным ТЗ, в котором в конечном счете заказчик не просил "вот это подвинуть, а это поменять, не нравится". Кстати, попробуйте написать программу без намеков на ООП в кадрах. Это без оператора new. Если не получится — зачем быть пародией на ООП, если можно его использовать? Но дело Ваше. Кадры — это по взрослому. |
тролинг тема детектед...
А в чём вы пишите код? Попробуйте Flash Builder или Flash Develop В своё время, как только сел за Flash Builder, подобные вопросы отпали сразу. Разбирал как то игру для вконтакте(клон мортал комбата) где было 12 персонажей, и у каждого было по 2 фаталити, которые грузились отдельными swf. задание было сделать кнопку вкл/выкл звука. и вместо плюшек: Код AS3:
|
| Часовой пояс GMT +4, время: 15:11. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.