Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Флейм (http://www.flasher.ru/forum/forumdisplay.php?f=53)
-   -   Как не превратить код в антипаттерны? (http://www.flasher.ru/forum/showthread.php?t=208698)

Gerbert 17.08.2014 02:28

Котяра, Спасибо!
Цитата:

Это очень плохие имена, которые всё равно не внесут ясности.
Я немного не то имел ввиду. Имена должны быть в контексте приложения, но если знать, что
этот класс имеет отношение, к тому-то и тому-то паттерну, то разобраться будет куда легче.

Цитата:

Чаще всего - Команда - это объект, который совершает действия над другими объектами, передаными в качестве параметров конструктора.
Если я не ошибаюсь, то команда выполняет таски, в конструктор которых передаются обрабатываемые объекты. И объекты эти выполняются в публик методе execute. И если я Вас правильно понял, то если метод execute станет что-то возвращать, то командой это уже не будет. И получается, что нужно выполняемый метод во что-то оборачивать и тогда все останется в гармонии. Правильно я понял?

illuzor, поверьте, я тоже могу говорить грубости, но не Вам.

MikroAcse 17.08.2014 15:12

Gerbert, человек вам ответил, а вы сразу кидаетесь. Причём это правда. Если постоянно думать о паттернах - эффективность работы упадет в разы. Не фанатейте.

Gerbert 17.08.2014 15:32

MikroAcse, кидаетесь Вы, а я вступил в словесную перепалку.
Правда что? То что если думать постоянно о паттернах? А кто сказал, что я ПОСТОЯННО о них думаю?
Цитата:

Если постоянно думать о паттернах - эффективность работы упадет в разы.
Да ну нафиг! Вы исследования чтоль проводили? Или только что придумали?)))

Добавлено через 1 минуту
Вам осталось сказать - "сам я пользуюсь паттернами и соблюдаю чистоту их исполнения, но посоветую обратное и вопрос ерунда". И ждать орден.

MikroAcse 17.08.2014 18:00

Да уж. С Вами не о чем разговаривать. Вы умеете адекватно отвечать на вопросы и не начинать "словесную перепалку" с теми, кто Вам просто ответил?

Gerbert 17.08.2014 18:25

Цитата:

с теми, кто Вам просто ответил?
Цитата:

Gerbert, человек вам ответил, а вы сразу кидаетесь.
В русском языке это называется упрек.
Цитата:

Причём это правда.
Это Вы подтвердили... мне не понятно что.
Цитата:

Если постоянно думать о паттернах - эффективность работы упадет в разы.
Это вообще что?
И получается, что Ваш просто ответ, это вот эта непонятная фраза?
Цитата:

Не фанатейте.
В этой теме я получил только один адекватный ответ и этими словами я не хочу подчеркнуть то,
что Вы не способны дать ответ. Просто в этот раз, было бы полезней ( мне ), если бы Вы промолчали.
Вы ответа не дали, но наговорили на две страницы. И ещё меня вовлекли.

MikroAcse 17.08.2014 23:19

Я ничего не наговаривал. Кажется, это Вы на каждое моё слово отвечаете несколькими предложениями.

Но я не хочу больше спорить, Вы имеете права на свою точку зрения, как и я.

Котяра 18.08.2014 12:28

Вернёмся к паттерну Команда.
В том же as3commons.async
execute возвращает любые значения
http://www.as3commons.org/as3-common....html#Commands
Для асинхронных команд это не имеет смысла, но для синхронных - почему бы и нет?

ChuwY 18.08.2014 15:37

Для асинхронных можно добавить метод getResult и дергать его по событию выполнения или же передавать результаты в самом объекте события.

Котяра 18.08.2014 15:47

Там есть события, по которым срабатывают очереди и прочее. Для шаринга результатов я обычно передаю некий общий объект Context - в который пишут/читают/изменяют все команды из очереди.

Gerbert 18.08.2014 21:51

Цитата:

Для шаринга результатов я обычно передаю некий общий объект Context - в который пишут/читают/изменяют все команды из очереди.
Если в общих чертах, то это вот так или Вы о другом? Если о другом, то можно немного псевдо кода.
Код AS3:

var context:* = 1;
 
new Command()
.addCommand(new ReturnValueTask(foo1, context))
.addCommand(new ReturnValueTask(foo2, context))
 
private function foo1(n:int):int
{
        return n + 1;
}
 
private function foo2(n:int):int
{
        return n + 1;
}
 
package
{
        public class ReturnValueTask
        {
                public function ReturnValueTask(method:Function, context:*)
                {
 
                }
 
                public function execute():void
                {
                        context = method.call(null, context);
                }
        }
}



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

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