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

回答編集履歴

1

追記

2017/06/08 12:47

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -5,4 +5,16 @@
5
5
 
6
6
  では、オブジェクト指向プログラミングさえあれば、手続き型プログラミングが完全に不要かと言うとそんなことはありません。やはり必要な場面はでてきます。
7
7
  その時、クラスのstaticメンバで実装するのか、通常のグローバル関数/グローバル変数で実装するのかは、大差はないように感じます。
8
- よりクラスと強く結びついた機能ならstaticメンバでしょうし、例えば、他のクラスもサポートするようなあまりクラスとの結びつきが強くないものはグローバル関数/変数を選択するだろうと思います。
8
+ よりクラスと強く結びついた機能ならstaticメンバでしょうし、例えば、他のクラスもサポートするようなあまりクラスとの結びつきが強くないものはグローバル関数/変数を選択するだろうと思います。
9
+
10
+ ---
11
+ 【追記への回答】
12
+
13
+ > では、積極的にstaticにした方が良いのでしょうか?
14
+
15
+ staticと非static、どちらかが良いかはその要件で決定できると思います。
16
+ クラスをインスタンス化する度に必要なメモリなら非staticメンバ変数です。
17
+ その非staticメンバ変数を操作する関数なら概ね非staticメンバ関数でしょう。(こちらは例外があるかもしれません。)
18
+
19
+ クラスに対して1つだけ存在して欲しいメモリならstaticメンバ変数です。
20
+ 一切の非staticメンバをアクセスしないなら概ねstaticメンバ関数でしょう。(たまたまアクセスしていないだけで、本質的にはアクセスしても可笑しくない場合は非staticで実装することもあるでしょう。)