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

回答編集履歴

3

冗長な記述を削除

2018/01/25 20:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -9,11 +9,9 @@
9
9
 
10
10
  しかしながらstaticというのは要するに「グローバル」な情報を意味しますのでマルチスレッドプログラミングに対しては危険が伴いますよね・・・スコープ、コンテキスト(どのスレッドでアクセスされるか)を考えて適切な置き場所を検討すればよいと思います。
11
11
 
12
- 場合によってはクラスのインスタンスをスレッドスコープにおくように考えればstaticであることは逆に「損」になり普通にインスタンスフィールドであることの方が自然になると思います。staticよりインスタンスフィールドやクロージャーのようなものの方がより柔軟であると思います。
13
-
14
12
  > それともjavaだと以外と気にせず下のように毎回実行しちゃったり
15
13
  するんでしょうか?なんかすごく無駄な処理をしてる感じで気持ち悪いのですが。
16
14
 
17
- staticかどうかと関係のない議論だと思います。変化をきっかけになにかを起動するというイベントドリブンな方法論を用いて解決を図るのがよいと思いますがそれとstaticな変数が使えるかどうかは別の問題のような気がします。
15
+ 変化をきっかけになにかを起動するというイベントドリブンな方法論を用いて解決を図るのがよいと思いますがそれとstaticな変数が使えるかどうかは別の問題のような気がします。
18
16
 
19
17
  抽象的なコメントでスミマセン。

2

誤記訂正

2018/01/25 20:15

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -16,4 +16,4 @@
16
16
 
17
17
  staticかどうかと関係のない議論だと思います。変化をきっかけになにかを起動するというイベントドリブンな方法論を用いて解決を図るのがよいと思いますがそれとstaticな変数が使えるかどうかは別の問題のような気がします。
18
18
 
19
- 抽象的なコメントでスミマセン
19
+ 抽象的なコメントでスミマセン。

1

誤記訂正

2018/01/25 09:02

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  C言語でローカル変数にstaticが指定できることの意味は「関数外にその変数を見せない」つまりスコープの制限であると思います。
7
7
 
8
- Javaにはクラスというスコープがあります。クラススコープ内のstaticな情報として考えるのが自然ではないでしょうか?あるいはその関数が動作する際の特定のコンテキストに依存した静的な情報ならばクロージャー的な考え方を使ってもよいと思います(ただしJavaが生成できるクロージャーの中のローカル変数は変更不能という他の言語より制約がきついのでコーディングが少々まどろっこしくなるのは否めませんが・・・)
8
+ Javaにはクラスというスコープがあります。クラススコープ内のstaticな情報として考えるのが自然ではないでしょうか?あるいはその関数が動作する際の特定のコンテキストに依存した静的な情報ならばクロージャー的な考え方を使ってもよいと思います(ただしJavaが生成できるクロージャーの中のローカル変数は変更不能であり他の言語より制約がきついのでコーディングが少々まどろっこしくなるのは否めませんが・・・)
9
9
 
10
10
  しかしながらstaticというのは要するに「グローバル」な情報を意味しますのでマルチスレッドプログラミングに対しては危険が伴いますよね・・・スコープ、コンテキスト(どのスレッドでアクセスされるか)を考えて適切な置き場所を検討すればよいと思います。
11
11