質問するログイン新規登録

回答編集履歴

2

追記

2021/05/10 04:15

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -2,4 +2,18 @@
2
2
  呼び出し先が構築した値が呼び出し元で必要なら呼び出し先の関数の戻り値に乗せるべきかと思います。
3
3
  トリッキーな値の共有は読みにくくなるのでお勧めしません。
4
4
 
5
- 関数間で密接に共有したいものがある場合は構造体のフィールドに共有したい変数を置いて関数はその構造体のメソッドとして実装します。
5
+ ~~関数間で密接に共有したいものがある場合は構造体のフィールドに共有したい変数を置いて関数はその構造体のメソッドとして実装します。~~これはHTTPハンドラでは不適切だったので忘れてください。
6
+
7
+ 質問にある状況を整理すると、
8
+ HandlerUserConfirm関数で得た値をHandlerConfirmDelete関数で参照できたとしても「不適切」です。
9
+
10
+ なぜなら、HandlerUserConfirm関数とHandlerConfirmDelete関数を呼び出したきっかけのHTTPクライアントが同一であるとは限らないからです。
11
+
12
+ こういう状況でHTTPハンドラで横断する方法はグローバル変数だとクライアント別の処理はできないので、「クッキーストレージまたはセッションストレージを使う」方法が一般的ですが、フロントの設計で回避するのが今時のやり方です(サーバーをステートレスに実装するとサーバーを負荷分散させやすい)。
13
+
14
+ つまり、フロントの設計で以下のパラメータを同じものにするというのがおすすめです。
15
+ - HandlerUserConfirmの時につけるパラメータ
16
+ - HandlerConfirmDeleteの時につけるパラメータ
17
+
18
+ 冗長に見えるかもしれませんが、HandlerConfirmDeleteでも同じ外部APIを呼んで同じ結果が得られるという前提であればHandlerUserConfirm内部で得られる値と同じものがHandlerConfirmDelete内部で得られるということになります。
19
+ もし、外部APIが一定の入力に対し同じ結果を得るようなものではないのであればその旨追記ください。

1

追記

2021/05/10 04:15

投稿

nobonobo
nobonobo

スコア3367

answer CHANGED
@@ -1,3 +1,5 @@
1
1
  関数と関数は呼び出しの元と先の関係であるのが一般的で、呼び出し先で必要な値は呼び出し元が引数に乗せるのが最も自然です。
2
2
  呼び出し先が構築した値が呼び出し元で必要なら呼び出し先の関数の戻り値に乗せるべきかと思います。
3
- トリッキーな値の共有は読みにくくなるのでお勧めしません。
3
+ トリッキーな値の共有は読みにくくなるのでお勧めしません。
4
+
5
+ 関数間で密接に共有したいものがある場合は構造体のフィールドに共有したい変数を置いて関数はその構造体のメソッドとして実装します。