Маленькие секреты профессионалов или как упростить написание кода.
Здесь, я бы хотел рассказать о том, как не плодить лишние классы.
Многие начинающие программисты, начитавшись об ООП, начинают разбивать (код на множество классов), подменяя понятие класс – функция.
Классы нужны только, если для вызова одной или нескольких функции, из этого класса, сами функции вызывают множество функции и переменных, этого класса, тем самым мы облегчаем читаемость нашего кода, но надо задать себе вопрос этот класс универсальный.
Универсальный класс, тот который, не меняя можно вставить в другое приложение.
Классы лучше использовать только в тех случаях, когда надо разбить программу на блоки или код настолько универсален, чтоб его не меняя можно вставить в другое приложение.
Что такое Блок?
В блок могут входить несколько классов, но желательно, чтоб эти классы были универсальны, или улучшали читаемость и поддержку кода в будущем.
Блоки - это независимые классы, например, создается игра.
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
Комментарии
|
|
|
Ты имеешь ввиду типа x=x ? ну да это моветон. читать то неудобно
|
|
|
|
именно
|
|
|
|
Моветон - это пукнуть при дамах. А пробелами выделять - это необходимость.
|
|
|
|
Почти всегда пишу Math.sqrt(x*x + y*y) и очень раздражаюсь, когда при переводе строки редактор внаглую форматирует =)
|
|
|
|
Какой кошмар.
|
|
|
|
Не читаю код без пробелов
![]() |
|
|
|
По поводу удаления детей. removeChildren() не катит?
|
|
|
|
Я пишу так, потому что когда надо так, я ни секунды не задумываюсь, почему мой код не правильно работает, выработался автоматизм.
Я, даже и забыл почему, в каких-то случаях, код перестаёт правильно работать. Откуда, у меня выработалась, такая концепция насчет блоков! Совершенный код, 2-е изд.djvu 79стр. Наверно отсюда + UML – Шаблоны проектирования. Может названия не совпадают, но суть от этого не меняется. Цитата:
82 ЧАСТЬ II Высококачественный код
Придерживайтесь одного разумного правила: диаграмма системного уровня вроде той, что показана на рис. 5-5, должна быть ациклическим графом. Иначе говоря, программа не должна содержать циклических отношений, при которых класс А использует класс В, класс В использует класс С, а класс С — класс А. При работе над крупными программами и программными комплексами проектирование на уровне подсистем просто необходимо. Если вам кажется, что ваша программа достаточно мала, чтобы проектирование на уровне подсистем можно было пропустить, хотя бы примите это решение осознанно. Блок должен состоять из двух трех классов. //Не считая стандартных классов, языка, на котором вы пишете код. Как, например Болт-гайка-шайба. Если будет больше намного больше, то надо спросить, а не пытаетесь ли вы, впихнуть туда, как можно больше функционала, и не проще ли это сделать в отдельном блоке. |
|
|
Обновил(-а) Vektor 17.01.2012 в 09:59
|
|
|
|
Цитата:
Господа, вы далеко ушли от контекста рассужения. Всяко использование чего либо бывает оправданно в данной контекстной связи, главное чтобы вы сумели обосновать факт его испольования - это означает что вы уверены и знаете что делаете.
|
|
|
Обновил(-а) HardCoder 17.01.2012 в 11:03
|
|
|
|
В Flash CS5 есть же code snippet. Почти тоже самое
![]() |
|
|
|
Цитата:
Маленькие секреты профессионалов
|
|
|
|
Цитата:
Совершенный код
У вас каша в голове. |
|
|
|
отличная идея - обучение программированию по методу Илоны Давыдовой
|
|
|
|
2 in4core - нимб не жмёт?
|
|
|
|
What is нимб?
|
|
|
|
Цитата:
What is нимб?
![]() |
|
|
|
А че смешного, я вот в религиозных примочках ваще нуб, Gbee, а что такое арпеджио?
|
|
|
|
Без понятия, думаю что-нить с музыкой связано. Если атеист, то ладно, тогда не так смешно.
|
|
|
|
вообще-то арпеджо, не путай с адажио
|
|
|
|
in4core, без обид, но вы знатный трололо :о))))
|
|
|
|
Цитата:
знатный трололо
|
|
|
|
Цитата:
вообще-то арпеджо, не путай с адажио
|
|
|
|
Фиг знает, во время моей юности употребляли термин АРПЕДЖО
|
|
|
|
Корыч, а давай в президенты!
|
|
|
|
Откуда не возьмись я понял: да ты же одно из воплощений Эрика Картмана!
|
|
|
|
2 crazyone,
![]() |
|
|
|
шутка смешная. до слюней
|
|
|
|
НЕНАВИСТЬ!
|
|
|
|
ЛЮБОВЬ!
|
|
|
|
crazyone
Я конечно понимаю, что у нас тут блоги — эдакие вольные степи вдалеке от цензуры и все такое. Но тут уже начинается переход на личности и оскорбления за гранью допустимого. |
|
|
|
Бестыч прав [x]
|
|
|
|
crazyone, я горжусь тем, что не могу распознать юмор в сравнении собеседника с мешком дерьма.
|
|
|
|
"С чего вы решили, что самомнение мое высоко?" - сказал in4core и скопировал fRemoveChildInSpriteArray в текстовый документ.
|
|
|
|
Цитата:
crazyone, я горжусь тем, что не могу распознать юмор в сравнении собеседника с мешком дерьма.
|
|
|
|
Вроде блог Вектора, а все движутся в каком угодно направлении, кроме заданного. Экая ирония.
|
|
|
|
Зайдут иностранцы, посмотрят код, увидят сотню комментариев в обсуждении кода и сделают выводы об уровне российских программистов
![]() |
|
|
|
Что нам оценки уровня от иностранцев? Лишь бы Корыч оценил.
|
|
|
|
Вчера у меня интернет перестал работать, а тут такого понаписали, не надо насмехаться над людьми, которые пытаются рассказать свою историю. Если вы расскажите свою историю то будьте сто процентов уверены, найдутся те, кто посмеется над вами.
Про себя. Я нигде не писал, что я профессионал, все мои знания взяты из книг, и когда я читаю вот такие статьи, то убеждаюсь, что двигаюсь в правильном направлении. http://winreview.ru/mif-o-frejmvorkax-chast-2/ Для тех, кто недавно занялся программированием, для них, те, кто отвечают на их вопросы, кажутся профессионалами, хотя могут не являться таковыми, просто они дольше вас занимаются программированием и естественно знают больше вас. Вот вам, Маленькие секреты профессионалов. Раскрыл все козыри профессионалов. ![]() Жду негодующих возгласов от профи. ![]() |
Последние записи от Vektor

















