Устранение избыточного кода путем объединения состояний активности

Можно комбинировать entry, during, и exit действия, которые выполняют те же задачи в состоянии.

Комбинируя состояния активности, которые выполняют одни и те же задачи, вы устраняете избыточный код. Для примера:

Отдельные действияЭквивалентные комбинированные действия

entry:
  y = 0;
  y=y+1;
during: y=y+1;

entry: y = 0;
entry, during: y=y+1;

en: 
  fcn1();
  fcn2();
du: fcn1();
ex: fcn1();

en, du, ex: fcn1();
en: fcn2();

Объединение состояний активности таким образом создает то же поведение выполнения графика (семантика) и генерирует тот же код, что и эквивалентные отдельные действия.

Как объединить состояния активности

Объедините набор entry, during, и/или exit действия, которые выполняют ту же задачу, что и разделенный списками , разделенными запятыми в состоянии. Вот синтаксис:

entry, during, exit: task1; task2;...taskN;

Можно также использовать эквивалентные сокращения:

en, du, ex: task1; task2;...taskN;

Допустимые комбинации

Можно использовать любую комбинацию из трех действий. Для примера действительны следующие комбинации:

  • en, du:

  • en, ex:

  • du, ex:

  • en, du, ex:

Можно объединить действия в любом порядке в списке, разделенном запятыми. Для примера, en, du: дает тот же результат, что и du, en:.

Недопустимые комбинации

Вы не можете объединить два или более действия одного типа. Например, следующие комбинации недопустимы:

  • en, en:

  • ex, en, ex:

  • du, du, ex:

Если вы комбинируете несколько действий одного типа, вы получаете предупреждение, что график выполняет действие только один раз.

Порядок выполнения комбинированных действий

Состояния выполняют объединенные действия в том же порядке, в котором они выполняют отдельные действия:

  1. Entry действия сначала сверху вниз в том порядке, в котором они появляются в состоянии

  2. During действия во-вторых, сверху вниз

  3. Exit действия последними, сверху вниз

Порядок, в котором вы комбинируете действия, не влияет на поведение выполнения состояний. Для примера:

Это состояние...Выполняет действия в этом порядке...

  1. en: y = 0;

  2. en: y=y+1;

  3. du: y=y+1;

  1. en: y=y+1;

  2. en: y = 0;

  3. du: y=y+1;

  1. en: y=y+1;

  2. en: y = 0;

  3. du: y=y+1;

  1. en: y=y+1;

  2. en: y = 10;

  3. du: y=y+1;

  4. ex: y = 10;

Правила для объединения состояний активности

  • Не комбинируйте несколько действий одного типа.

  • Не создавайте данные, события или сообщения, которые имеют то же имя, что и ключевые слова действий: entry, en, during, du, exit, ex.

Похожие темы