Маленькие секреты профессионалов или как упростить написание кода.
Здесь, я бы хотел рассказать о том, как не плодить лишние классы.
Многие начинающие программисты, начитавшись об ООП, начинают разбивать (код на множество классов), подменяя понятие класс – функция.
Классы нужны только, если для вызова одной или нескольких функции, из этого класса, сами функции вызывают множество функции и переменных, этого класса, тем самым мы облегчаем читаемость нашего кода, но надо задать себе вопрос этот класс универсальный.
Универсальный класс, тот который, не меняя можно вставить в другое приложение.
Классы лучше использовать только в тех случаях, когда надо разбить программу на блоки или код настолько универсален, чтоб его не меняя можно вставить в другое приложение.
Что такое Блок?
В блок могут входить несколько классов, но желательно, чтоб эти классы были универсальны, или улучшали читаемость и поддержку кода в будущем.
Блоки - это независимые классы, например, создается игра.
1) Делаем Prealader, блок независимый от того какая игра загружается.
2) Делаем Экран - Начало Игры, здесь игрок может перейти к просмотру рекордов, зарегистрироваться или выбрать своё имя, для новой игры или для загрузки игры, выбрать в какой режим игры играть, если есть такой выбор (здесь нужно создать сохранения и загрузку игроков, которые уже играли в игру или собираются в неё играть).
3) Рекорды – Он считывает результаты, достигнутые в игре, и отображает их на экране.
4) Сама игра – Здесь тоже, можно и нужно разбивать игру на классы, например класс - инвентарь , это отдельный блок, в котором персонаж может менять экипировку, рыться в рюкзаке и так далее, класс - магазин, класс - монстр, класс - ещё чего ни будь, главное не путать Блок-Класс, Класс-функция, и ещё ООП дело хорошее и нужное, но только если, игра большая, или код будет использоваться в продолжении игры, или в поддержке игры долгое время, типа онлайновых игр.
Разбив приложение на блоки, можно каждый блок программировать отдельно, блок получает какие-то данные и сам делает с этими данными что нужно, в не зависимости, от других блоков, и если нужно отдаёт преобразованные данные другому блоку.
Теперь я бы хотел перейти к заглавию статьи.
Все мы знаем, что это такое, но не все знают, как это может упростить написание кода.
Вроде всё правильно!
А теперь, создадим 10 MovieClip или Sprite.
Ага! понимаете.
Вот функция, которая упростит нам жизнь.
private function fAddChild(mcClip:*,x:int=0,y:int=0,bMouseEnabled:Boolean=true):void { addChild(mcClip); mcClip.x=x; mcClip.y=y; mcClip.mouseEnabled=bMouseEnabled; } mcClip.mouseEnabled = false; // Отключает реакцию на мышь. А вот её вызов. fAddChild(_mcClip); fAddChild(_mcClip,100,100); fAddChild(_mcClip,0,0, false); //Не правда ли что так лучше выглядит.
private function fAddChildInSprite(mcClip:*,mcClip1:*,x:int=0,y:int=0,bMouseEnabled:Boolean=true):void { mcClip.addChild(mcClip1); mcClip1.x=x; mcClip1.y=y; mcClip1.mouseEnabled=bMouseEnabled; } fAddChildInSprite(_mcClip, mcClip1,200,200); private function fAddChildArray(amcAddChild:Array,x:int=0,y:int=0,bMouseEnabled:Boolean=true):void { for (var i:uint=0; i<=amcAddChild.length-1; i++) { addChild(amcAddChild[i]); amcAddChild[i].x=x; amcAddChild[i].y=y; amcAddChild[i].mouseEnabled=bMouseEnabled; } } private function fAddChildInSpriteArray (mcClip:*,amcAddChild:Array,x:int=0,y:int=0,bMouseEnabled:Boolean=true):void { for (var i:uint=0; i<=amcAddChild.length-1; i++) { mcClip.addChild(amcAddChild[i]); amcAddChild[i].x=x; amcAddChild[i].y=y; amcAddChild[i].mouseEnabled=bMouseEnabled; } } private function fRemoveChildInSpriteArray(mcClip:*,amcRemove:Array):void { for (var i:uint=0; i<=amcRemove.length-1; i++) { mcClip.removeChild(amcRemove[i]); } } private function fRemoveChildIArray(amcRemove:*):void { for (var i:uint=0; i<=amcRemove.length-1; i++) { removeChild(amcRemove[i]); } }
Всего комментариев 117
Комментарии
18.01.2012 17:33 | |
Цитата:
Я нигде не писал, что я профессионал, все мои знания взяты из книг, и когда я читаю вот такие статьи, то убеждаюсь, что двигаюсь в правильном направлении.
http://winreview.ru/mif-o-frejmvorkax-chast-2/ Но посыл верный - усложнение это плохо, универсальные фреймворки - хороши в утопиях, а в реальности - зло. |
18.01.2012 17:35 | |
Цитата:
просто они дольше вас занимаются программированием и естественно знают больше вас
|
18.01.2012 18:25 | |
Цитата:
Человек, который год назад начал, заниматься, программированием, естественно знаем больше того кто только вчера открыл, для себя программирование.
Давайте сравним 2 месяца практики и год теории. |
|
Обновил(-а) GBee 18.01.2012 в 18:43
|
18.01.2012 18:45 | |
Можно сравнить 5лет и год.
И даже 10лет и 5лет. Два профессионала, один профессиональней другого. Думаю, так мы зайдем в тупик, и будем там выяснять, кто прав. |
18.01.2012 18:45 | |
Давайте !!! )) 2 месяца практики будут круче года теории, хотя 2 месяца наверное маловато, остановлюсь на 3х
|
18.01.2012 20:18 | |
А я думаю, так: два месяца теории плюс месяц практики, намного круче чем пол года практики.
Поясню почему. На одном форуме приходит человек, который считает что классы - это файлы и начинает задавать разного рода вопросы: 1. как обратится из класса к главной сцене? 2. почему выдает: "ссылка на обьект null"? 3. зачем всегда нужно писать: "extends MovieClip"? Ему разжевывают что по чем, дают ссылку на интересную статью. Проходит 15 минут - он отписывает что "обьект null?". И засоряет форум еще 20-ю такими же глупыми темами. Второй человек задает те же вопросы, но параллельно читает К.Мука. Статью по данной ссылке штормит два дня. Проходит пол года и первая личность задает те же нелепые вопросы. И видно, что не происходит никакого прогресса. Он дальше не имеет понятия, что такое дисплейлист, и почему stage всегда равен null. Он понятия не имеет что такое наследование и класс, потому что все время занимается копипастингом. Второй же в это время мало чего знает и слышал, но он оперирует гораздо лучше терминами языка. А самое главное - у него есть то, от чего ему завидуют все "копипастеры", "декомпилеры" и "форумотроллеры": он понимает что он делает. |
|
Обновил(-а) HardCoder 18.01.2012 в 20:32
|
18.01.2012 20:31 | |
Прекрасно сказанно!
|
18.01.2012 21:07 | |
Цитата:
stage всегда равен null
|
18.01.2012 21:40 | |
Во времена гугла, ходить на форум по маленькому вопросу - моветон. :о))
Все это субъективно. |
18.01.2012 21:44 | |
Цитата:
Во времена гугла, ходить на форум по маленькому вопросу - моветон. :о))
Все это субъективно. |
18.01.2012 21:49 | |
Цитата:
Правила поведения в сети не преподают.
http://ru.wikipedia.org/wiki/%D1%E5%...F2%E8%EA%E5%F2 ;о) |
21.01.2012 06:37 | |
Только что вернулся из Европы, всем привет!
Я ещё успел? |
Последние записи от Vektor