【教えてみんなのBP!】代入アクティビティで変数をリセットしますか?

ワークフロー開発で培った皆さんの知見をお貸しください。(初投稿でドキドキですがお手柔らかにどうぞ!)

繰り返しの最初や、処理のはじめに[代入]アクティビティを使って変数を初期化しますか?

ーー以下、質問の経緯ですーー

通常、変数は設定しているスコープ外に出たときに中身がリセットされると思います。
(繰り返し系アクティビティの直下にあるシーケンスをスコープにしていても繰り返しの度にリセットされます)

公式によるベストプラクティスではスコープはなるべく狭いこと・同一名の変数が存在しないことが挙げられているので、それに従えば特別な状況でない限り「代入アクティビティで予め変数をリセットする」ということは必要ないように感じています。

が、人が作成したワークフローを見るとかなりの割合で変数のリセットが行われている印象・・・
一体みなさんどうしているの!?と気になりました。

ーーーー

ぜひご意見をお聞かせくださいっ!よろしくお願いします!

※タイトルの「BP」は「ベストプラクティス」の略です :grin:

こんにちは

一口に変数といっても値型と参照型で意味が異なってくると思いますが、どちらを指していますでしょうか?

Yoichiさんこんにちは!コメントありがとうございます。
お恥ずかしながら値型と参照型という概念を初めて意識しました…!
調べてみましたが私がイメージしていたのはどちらかというと値型のようです。

そして値型の変数のリセット、というと例えば
・フラグとして使用するBoolean型の変数にFalseを代入して初期化しておく
・カウンターとして使用するInt32型の変数に0をら代入して初期化しておく
のような使用例が考えられるかと思います。

といったようなやり方をイメージしています。

@wadasaki1996

ワークフロー開発において、[代入]アクティビティを使用して変数を繰り返しやプロセスの開始時に初期化することは、通常、明瞭さと一貫性を保つために推奨されています。

こんにちは

とりうるパターンとして
1.その型の言語仕様上の規定値がセットされるので何もしない。(変数パネルの規定値に何もセットしない、代入アクティビティでその値もセットしない)
2.変数パネルの規定値に何らかの値(言語仕様上の規定値含む)を明示的にセットする
3.代入アクティビティで何らかの値(言語仕様上の規定値含む)を明示的にセットする

になるかと思います。
基本的には可読性の問題かと思いますが、
ワークフローで処理を追うときは3の方が追いかけやすいと思いますが、反面アクティビティ数が増えると読みにくくなる要因ともなるので、このあたりのトレードオフかと思います。

開発あるいは保守する方が、言語仕様上の規定値を理解して、いちいち明示的に示さなくても組織メンバー全員が問題なく業務遂行できるのであれば1でも良いかもしれませんが、2または3としておいた方がより多くの人にとって読みやすくなるのではないかと思います。

このあたりはメンバーの力量などにも左右されるかと思いますので、これらを加味しながら組織としてどれを優先するかを決めると良いのではと思います。

なお個人的には3の方が、いちいち変数パネルで確認しなくてもよいので、レビューするときなどはありがたいケースが多いです。