回答編集履歴
3
文章の修正
answer
CHANGED
@@ -32,4 +32,4 @@
|
|
32
32
|
|
33
33
|
そもそも `static` キーワード自体、シングルトンパターンの実装や引数にしか依存しない関数を定義したい時ぐらいしか私は使いません。
|
34
34
|
|
35
|
-
そして、**引数にしか依存しない関数のみ
|
35
|
+
そして、**引数にしか依存しない関数のみを定義するクラス** は static で良いでしょう。逆に言えばそれ以外は駄目です。
|
2
引用と回答内容が微妙にかみ合っていなかったので直しました
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
> staticは多用するとメンテナンス性が損なわれる
|
4
4
|
|
5
|
-
`static` キーワードを使うとインスタンス化や継承・インターフェイスなど、オブジェクト指向の機能がもろもろ使えなくなります。
|
5
|
+
`static` キーワードを使うとインスタンス化や継承・インターフェイスなど、**オブジェクト指向の機能がもろもろ使えなくなります。**
|
6
6
|
|
7
7
|
オブジェクト指向言語において、メンテナンスがしやすくなるためにはポリモーフィズムが欠かせません。そのことを言っているのだと思います。
|
8
8
|
|
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
通常のオブジェクトはインスタンス毎に1つ、static オブジェクトはクラス毎に1つしか存在しないので、後者の方がメモリサイズが小さいでしょう。
|
16
16
|
|
17
|
-
ですが、メモリの節約のために static を使うのは悪手と思います。
|
17
|
+
ですが、**メモリの節約のために static を使うのは悪手** と思います。
|
18
18
|
|
19
19
|
> 上の例で挙げた3つであればstaticクラスのstaticメソッドやstatic変数などにしてしまうべき
|
20
20
|
|
@@ -22,8 +22,7 @@
|
|
22
22
|
|
23
23
|
> テーブル定義が変わったりした場合、複数クラスに同じSQL文を書いていたらその分だけ直さなければなりませんが、static変数として持っておけば修正する箇所がそこだけで済みます
|
24
24
|
|
25
|
-
詳しい実装は分かりませんが、ベースクラスを用意してそこに同じSQL文とやらを書けば必要なさそうですね。
|
25
|
+
詳しい実装は分かりませんが、ベースクラスを用意してそこに同じSQL文とやらを書けば必要なさそうですね。(あくまで勘)
|
26
|
-
(あくまで勘)
|
27
26
|
|
28
27
|
> 0や1といったたった一桁の数値であっても、マジックナンバー化を防ごうと思ったら各クラス毎に定数として定義すべきですし、そうするくらいならstaticな定数として定義した方がよいと感じます
|
29
28
|
|
@@ -31,8 +30,6 @@
|
|
31
30
|
|
32
31
|
> staticクラスを積極的に使用すべき場面とはどこなのか?
|
33
32
|
|
34
|
-
static
|
33
|
+
そもそも `static` キーワード自体、シングルトンパターンの実装や引数にしか依存しない関数を定義したい時ぐらいしか私は使いません。
|
35
34
|
|
36
|
-
> staticクラスを作成すべき場面とは
|
37
|
-
|
38
|
-
引数にしか依存しない関数のみしか定義しないクラスは static で良いでしょう。
|
35
|
+
そして、**引数にしか依存しない関数のみしか定義しないクラス** は static で良いでしょう。逆に言えばそれ以外は駄目です。
|
1
文章の修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
> 「staticはメモリを使う」
|
12
12
|
|
13
|
-
逆ではないでしょうか。
|
13
|
+
**逆**ではないでしょうか。
|
14
14
|
|
15
15
|
通常のオブジェクトはインスタンス毎に1つ、static オブジェクトはクラス毎に1つしか存在しないので、後者の方がメモリサイズが小さいでしょう。
|
16
16
|
|
@@ -22,7 +22,8 @@
|
|
22
22
|
|
23
23
|
> テーブル定義が変わったりした場合、複数クラスに同じSQL文を書いていたらその分だけ直さなければなりませんが、static変数として持っておけば修正する箇所がそこだけで済みます
|
24
24
|
|
25
|
-
詳しい実装は分かりませんが、ベースクラスを用意してそこに同じSQL文とやらを書けば必要なさそうですね。
|
25
|
+
詳しい実装は分かりませんが、ベースクラスを用意してそこに同じSQL文とやらを書けば必要なさそうですね。
|
26
|
+
(あくまで勘)
|
26
27
|
|
27
28
|
> 0や1といったたった一桁の数値であっても、マジックナンバー化を防ごうと思ったら各クラス毎に定数として定義すべきですし、そうするくらいならstaticな定数として定義した方がよいと感じます
|
28
29
|
|
@@ -30,4 +31,8 @@
|
|
30
31
|
|
31
32
|
> staticクラスを積極的に使用すべき場面とはどこなのか?
|
32
33
|
|
33
|
-
static はシングルトンパターンの実装や、引数にしか依存しない関数を定義したい時ぐらいしか私は使いません。
|
34
|
+
static はシングルトンパターンの実装や、引数にしか依存しない関数を定義したい時ぐらいしか私は使いません。
|
35
|
+
|
36
|
+
> staticクラスを作成すべき場面とは
|
37
|
+
|
38
|
+
引数にしか依存しない関数のみしか定義しないクラスは static で良いでしょう。
|