Маленькие секреты профессионалов или как упростить написание кода.
Здесь, я бы хотел рассказать о том, как не плодить лишние классы.
Многие начинающие программисты, начитавшись об ООП, начинают разбивать (код на множество классов), подменяя понятие класс – функция.
Классы нужны только, если для вызова одной или нескольких функции, из этого класса, сами функции вызывают множество функции и переменных, этого класса, тем самым мы облегчаем читаемость нашего кода, но надо задать себе вопрос этот класс универсальный.
Универсальный класс, тот который, не меняя можно вставить в другое приложение.
Классы лучше использовать только в тех случаях, когда надо разбить программу на блоки или код настолько универсален, чтоб его не меняя можно вставить в другое приложение.
Что такое Блок?
В блок могут входить несколько классов, но желательно, чтоб эти классы были универсальны, или улучшали читаемость и поддержку кода в будущем.
Блоки - это независимые классы, например, создается игра.
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
Комментарии
16.01.2012 20:53 | |
Ты имеешь ввиду типа x=x ? ну да это моветон. читать то неудобно
|
16.01.2012 21:04 | |
именно
|
16.01.2012 21:25 | |
Моветон - это пукнуть при дамах. А пробелами выделять - это необходимость.
|
16.01.2012 22:30 | |
Почти всегда пишу Math.sqrt(x*x + y*y) и очень раздражаюсь, когда при переводе строки редактор внаглую форматирует =)
|
16.01.2012 22:31 | |
Какой кошмар.
|
16.01.2012 23:04 | |
Не читаю код без пробелов
|
16.01.2012 23:19 | |
По поводу удаления детей. removeChildren() не катит?
|
17.01.2012 08:36 | |
Я пишу так, потому что когда надо так, я ни секунды не задумываюсь, почему мой код не правильно работает, выработался автоматизм.
Я, даже и забыл почему, в каких-то случаях, код перестаёт правильно работать. Откуда, у меня выработалась, такая концепция насчет блоков! Совершенный код, 2-е изд.djvu 79стр. Наверно отсюда + UML – Шаблоны проектирования. Может названия не совпадают, но суть от этого не меняется. Цитата:
82 ЧАСТЬ II Высококачественный код
Придерживайтесь одного разумного правила: диаграмма системного уровня вроде той, что показана на рис. 5-5, должна быть ациклическим графом. Иначе говоря, программа не должна содержать циклических отношений, при которых класс А использует класс В, класс В использует класс С, а класс С — класс А. При работе над крупными программами и программными комплексами проектирование на уровне подсистем просто необходимо. Если вам кажется, что ваша программа достаточно мала, чтобы проектирование на уровне подсистем можно было пропустить, хотя бы примите это решение осознанно. Блок должен состоять из двух трех классов. //Не считая стандартных классов, языка, на котором вы пишете код. Как, например Болт-гайка-шайба. Если будет больше намного больше, то надо спросить, а не пытаетесь ли вы, впихнуть туда, как можно больше функционала, и не проще ли это сделать в отдельном блоке. |
|
Обновил(-а) Vektor 17.01.2012 в 09:59
|
17.01.2012 10:59 | |
Цитата:
Господа, вы далеко ушли от контекста рассужения. Всяко использование чего либо бывает оправданно в данной контекстной связи, главное чтобы вы сумели обосновать факт его испольования - это означает что вы уверены и знаете что делаете.
|
|
Обновил(-а) HardCoder 17.01.2012 в 11:03
|
17.01.2012 18:15 | |
В Flash CS5 есть же code snippet. Почти тоже самое
|
17.01.2012 18:33 | |
Цитата:
Маленькие секреты профессионалов
|
17.01.2012 20:21 | |
Цитата:
Совершенный код
У вас каша в голове. |
17.01.2012 21:15 | |
отличная идея - обучение программированию по методу Илоны Давыдовой
|
17.01.2012 22:49 | |
2 in4core - нимб не жмёт?
|
17.01.2012 22:57 | |
What is нимб?
|
17.01.2012 23:23 | |
Цитата:
What is нимб?
|
17.01.2012 23:28 | |
А че смешного, я вот в религиозных примочках ваще нуб, Gbee, а что такое арпеджио?
|
17.01.2012 23:41 | |
Без понятия, думаю что-нить с музыкой связано. Если атеист, то ладно, тогда не так смешно.
|
17.01.2012 23:42 | |
вообще-то арпеджо, не путай с адажио
|
17.01.2012 23:43 | |
in4core, без обид, но вы знатный трололо :о))))
|
17.01.2012 23:53 | |
Цитата:
знатный трололо
|
17.01.2012 23:58 | |
Цитата:
вообще-то арпеджо, не путай с адажио
|
18.01.2012 00:04 | |
Фиг знает, во время моей юности употребляли термин АРПЕДЖО
|
18.01.2012 00:20 | |
Корыч, а давай в президенты!
|
18.01.2012 00:31 | |
Откуда не возьмись я понял: да ты же одно из воплощений Эрика Картмана!
|
18.01.2012 00:37 | |
2 crazyone,
|
18.01.2012 00:42 | |
шутка смешная. до слюней
|
18.01.2012 00:57 | |
НЕНАВИСТЬ!
|
18.01.2012 01:02 | |
ЛЮБОВЬ!
|
18.01.2012 01:16 | |
crazyone
Я конечно понимаю, что у нас тут блоги — эдакие вольные степи вдалеке от цензуры и все такое. Но тут уже начинается переход на личности и оскорбления за гранью допустимого. |
18.01.2012 01:20 | |
Бестыч прав [x]
|
18.01.2012 01:37 | |
crazyone, я горжусь тем, что не могу распознать юмор в сравнении собеседника с мешком дерьма.
|
18.01.2012 01:39 | |
"С чего вы решили, что самомнение мое высоко?" - сказал in4core и скопировал fRemoveChildInSpriteArray в текстовый документ.
|
18.01.2012 01:41 | |
Цитата:
crazyone, я горжусь тем, что не могу распознать юмор в сравнении собеседника с мешком дерьма.
|
18.01.2012 02:12 | |
Вроде блог Вектора, а все движутся в каком угодно направлении, кроме заданного. Экая ирония.
|
18.01.2012 02:18 | |
Зайдут иностранцы, посмотрят код, увидят сотню комментариев в обсуждении кода и сделают выводы об уровне российских программистов
|
18.01.2012 02:19 | |
Что нам оценки уровня от иностранцев? Лишь бы Корыч оценил.
|
18.01.2012 17:14 | |
Вчера у меня интернет перестал работать, а тут такого понаписали, не надо насмехаться над людьми, которые пытаются рассказать свою историю. Если вы расскажите свою историю то будьте сто процентов уверены, найдутся те, кто посмеется над вами.
Про себя. Я нигде не писал, что я профессионал, все мои знания взяты из книг, и когда я читаю вот такие статьи, то убеждаюсь, что двигаюсь в правильном направлении. http://winreview.ru/mif-o-frejmvorkax-chast-2/ Для тех, кто недавно занялся программированием, для них, те, кто отвечают на их вопросы, кажутся профессионалами, хотя могут не являться таковыми, просто они дольше вас занимаются программированием и естественно знают больше вас. Вот вам, Маленькие секреты профессионалов. Раскрыл все козыри профессионалов. Жду негодующих возгласов от профи. |
Последние записи от Vektor