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

回答編集履歴

3

文章の修正

2020/02/18 09:05

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -32,4 +32,4 @@
32
32
 
33
33
  そもそも `static` キーワード自体、シングルトンパターンの実装や引数にしか依存しない関数を定義したい時ぐらいしか私は使いません。
34
34
 
35
- そして、**引数にしか依存しない関数のみしか定義しないクラス** は static で良いでしょう。逆に言えばそれ以外は駄目です。
35
+ そして、**引数にしか依存しない関数のみ定義するクラス** は static で良いでしょう。逆に言えばそれ以外は駄目です。

2

引用と回答内容が微妙にかみ合っていなかったので直しました

2020/02/18 09:04

投稿

BluOxy
BluOxy

スコア2663

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

文章の修正

2020/02/18 09:03

投稿

BluOxy
BluOxy

スコア2663

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 で良いでしょう。