zHz00 Untitled

пятница, 15 июня 2012
23:35 Состояние системы
Когда программируешь какой-либо довольно сложный процесс, состоящий из череды вызовов разных функций в разном порядке, неизбежно приходишь к тому, что надо как-то описывать текущее состояние системы (какие операции производились, какие нет, какие выполняются в текущий момент). Для этого, как правило, используются разные флаги. Но чем сложнее процесс, тем их больше. В итоге разборки в этих флагах становятся тяжёлым процессом.

Я спросил у непосредственного начальства, есть ли альтернативный способ? Начальство сказало, что не знает.

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

Я применял пару раз методику автомата, но к проектам "с нуля". Получилось интересно, по крайней мере, мне.

Есть ли ещё способы?

@темы: Программирование

URL
Оказывается пронырливые твари контролируют даже чемпионат...
Разумеется, что тупого и примитивно-понятного языка в ет...
Я искал это очень долго! И нашёл! http://www.hawking.or...
Малевич - гений... Да нихрена он не гений! Ширпотреб в чи...
- Все по-старому...- сказала нежно.- Все по-старому... ...
http://www.sanytch.com/temp/myxa.html Гы-ы-ы... :D

15.06.2012 в 23:42

15.06.2012 в 23:42
Хочется спросить: а зачем функции знать откуда она вызвана?

Повторное использование кода --- это очень-очень-очень плохо.

// ssvda
URL

15.06.2012 в 23:47

15.06.2012 в 23:47
Гость, ну там не совсем надо знать, откуда она вызвана, в моём случае. У меня, например, надо было знать, вызывалась ли данная функция раньше и с каким результатом. Статические переменные не выход, т.к. нужно сбрасывать состояние, а чтобы функция сбросила свои статические переменные нужны разные извращения. Поэтому используется класс, содержащий в себе флаги и функции. Когда состояние надо сбросить, сбрасываются флаги.

Про повторное использование не понимаю. Это же наоборот хорошо.
URL

16.06.2012 в 00:09

16.06.2012 в 00:09
Нужно называть эти флаги понятными именами, а функции раскидывать по объектам. Если функция становится такой, что в ней начинаешь путаться, это знак, что она должна быть не функцией, а хотя бы набором функций, или часть её функциональности нужно отдать дочерним функциям, или всё это должен быть объект.

TSomeProcess = class(TObject)
private
procedure Step1;
procedure Step2;
//etc
public
function Run: boolean; //begin Step1; Step2; {etc} end;
public
property InputParam1: ...;
property InputParam2: ...;
property OutputParam1: ...;
//...
end;

URL

16.06.2012 в 01:43

16.06.2012 в 01:43
Ух ты! zHz, а давайте мы все вместе будем компьютерные игры делать? У меня как раз есть гениальная идея. Представьте - космический корабль пролетает мимо необитаемой планеты и получает оттуда сигнал бедствия. Экипаж спускается и находит огромный звездолёт неизвестной цивилизации. В центре звездолёта скопление яиц, которые начинают вылупляться при появлении людей. Из одного яйца вылезает существо, которое прыгает на лицо члена экипжа. Его не могут снять, но потом оно само отпадает. Все думают, что всё хорошо, ведь человек жив. Он хочет вернуться на корабль, но один из членов экипажа (это будет Главгер) его не пускает - думает, что он заражен. Однако, остальные пренебрегают опасностью и заставляют ГГ открыть двери. Корабль покидает планету, все спокойно обедают и тут прямо за обедом из этого человека вылазит зародыш, который убегает вглубь корабля и превращается там в большую и смертельно опасную тварь. У меня уже есть его предварительные наброски - это будет страшно. Начинается борьба за выживание, в которой устоит, понятно, толького ГГ и, пожалуй, корабельный кот. Детали я потом расскажу. У меня есть замыслы и на вторую часть. Ну как, идёт? Мы станем основателями корпорации. А потом мы станем злой корпорацией.))))
URL

16.06.2012 в 01:50

16.06.2012 в 01:50
Гость, археолог, опять вы? А, нет, всё-таки не похож..., хотя по числу посещений это археолог, т.к. сейчас 3 посетителя, а кто третий кроме меня -- я знаю, я с ним сейчас по асе говорю.

Так, а корованы грабить будет можно?)
URL

16.06.2012 в 01:55

16.06.2012 в 01:55
Так, а корованы грабить будет можно?)

Ну, я, как видите, задумывал сурвайвал-хоррор, или шутер, однако, если на основе сделать стратегию - можно будет и корованы грабить.
URL

16.06.2012 в 02:07

16.06.2012 в 02:07
Гость, археолог, опять вы?

Нет, но я почти такой же псих, как и он, одержим всякими хениальными проектами.
URL

16.06.2012 в 02:19

16.06.2012 в 02:19
Гость, тогда непонятно, что со счётчиком. либо вы тот, с кем я сейчас говорю по айсикью, либо вы смотрите страницу с отключёнными картинками.
URL

16.06.2012 в 02:33

16.06.2012 в 02:33
Гость, тогда непонятно, что со счётчиком. либо вы тот, с кем я сейчас говорю по айсикью, либо вы смотрите страницу с отключёнными картинками.

Искажение на счетчике? ОМАЙГАД! zHz00, слушайте, немедленно, НЕМЕДЛЕННО бегите из квартиры! Это ж признак того, что вы в фильме ужасов... о нет... у меня выключили свет! Ноутбук работает от батареи. Вы бегите, а я постараюсь про
URL

16.06.2012 в 07:24

16.06.2012 в 07:24
Гость,

URL

16.06.2012 в 07:37

16.06.2012 в 07:37
Кстати меня в гугле за вчера 4 раза нашли по нику и за сегодня уже 2.
Гость, вы не из /то/ случаем?)))

Разумеется, я обращаюсь к автору четвёртого комментарий, а не "ОМАЙГАД".
URL

17.06.2012 в 01:27

17.06.2012 в 01:27
Кстати меня в гугле за вчера 4 раза нашли по нику и за сегодня уже 2.
Гость, вы не из /то/ случаем?)))


Неет, я всегда ищу через Яндекс.
URL

17.06.2012 в 02:21

17.06.2012 в 02:21
Гость, гугл здесь был собирательным понятием. Я выделил именно его, т.к. в яндексе ещё две недели назад я искался очень плохо (хоть и искался, особенно по "zHz00"). Сейчас -- не знаю.
URL
Добавить комментарий

Расширенная форма

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail