과제를 개발하다 보면 병렬처리 혹은 동시 판단해야 할 케이스들이 생긴다.

그 경우 Parallel이나 Pick 중에 뭐를 쓸지 고민하게 된다.

둘의 차이는 인식 시점에서의 수행이다.

 

Parallel은 기본적으로 동시에 계속 진행된다.

따라서 어떤 인식 기점이 동시에 True가 될 수도 있고, 하나만 True가 될 수도 있다.

어찌됐든 Parallel 안에서는 Exit 조건이 달성되기 전까지 동시에 진행하게 된다.[각주:1]

 

Pick은 Trigger 영역에서 어떤 하나의 Branch를 인식해서 수행할 Branch를 선택하는 순간

다른 Branch들은 무시된다.

각 Trigger별 수행이 바로 밑에 정리되기 때문에 적합한 상황인 경우 가독성도 Parallel에 비해 훨씬 좋다.

 

따라서 각각의 활용은 대략 이런 형태이다.

i) Parallel이 더 적합한 경우

- 로그인 후 모달형태로 다른 타입들의 공지사항들이 뜨는데 각각 꺼줘야 하는 경우

- 여러 개를 인식하더라도 우선되는 하나만 꺼주면 모두 꺼져서 우선 순위를 지정하면 효율적인 경우

- 여러 개를 인식하면 문제가 있어서 우선 순위를 지정해야 되는 경우

- 보통은 exist 등을 병렬로 늘어놓고 exit조건을 적절히 배합해 진행[각각의 Boolean을 Or 조건으로 연결해도 괜찮]

- 수행 소스는 exit후 If나 switch를 통해 각각 진행. Boolean이 동시에 만족하는 경우도 있을 수 있으므로 주의.

ii) Pick이 더 적합한 경우

 - 여러 케이스 중 하나만 배타적으로 잡아야 하는 경우

 - exist 등을 각각 Trigger에 넣고 진행

 - 각 트리거에 대한 수행 소스는 Pick Branch를 넣어 짤막하게 구성

 - Exit조건이 따로 없기 때문에 Pick Branch의 Trigger에는 클릭같은 걸 넣을 수도 있음

 

 

보통 Parallel이나 Pick이 잘못 쓰이는 케이스는 각각이 리딩하는 액티비티들이 너무 많아지는 것이다.

Parallel이나 Pick은 너무 길게 끌고가면 소스의 중복이나 불필요한 리소스 사용 등이 발생할 개연성이 매우 커진다.[각주:2]

또 좌우로 넓어지는 액티비티의 특성상 길어지면 가독성이 안 좋아지는 단점이 있다.

따라서 동시인식, 동시수행이 필요한 구간만 설정하여 진행해야 한다.

+ pick은 모든 branch의 조건이 충족되지 않으면 가장 왼쪽(첫번째)에 있는 시퀀스를 실행한다.

  1. 실제로는 왔다갔다 하면서 체크 [본문으로]
  2. Retry Scope도 마찬가지 [본문으로]

+ Recent posts