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

回答編集履歴

2

微小修正

2017/05/24 04:53

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -11,7 +11,7 @@
11
11
  【追記】
12
12
  ちょっと質問の主旨から外れますが、instance methodの方が良いと言っている人も少なくないことにちょっとびっくりして、考えてみました。
13
13
 
14
- オブジェクト指向プログラミングって非常に強力です。一般に手続き型フログラミングより適る場面が多いです。(直感的には95%くらい? もしかすると99%くらいかも。)
14
+ オブジェクト指向プログラミングって非常に強力です。一般に手続き型フログラミングより適る場面が多いです。(直感的には95%くらい? もしかすると99%くらいかも。)
15
15
 
16
16
  そして、instance methodはオブジェクト指向プログラミングの代表的な仕組みの一つであり、static methodは昔からある手続き型プログラミングの代表格です。
17
17
  なので、一般的には手続き型よりオブジェクト指向型の方がよいよと言う意味で、instance methodを推奨している人も居るような気がします。

1

追記

2017/05/24 04:53

投稿

Chironian
Chironian

スコア23274

answer CHANGED
@@ -5,4 +5,18 @@
5
5
  この原則に則ると、instance変数に依存していないstatic methodを、instance methodに変更して依存させるのは、ナンセンスと思います。
6
6
  逆にいうと、テストしやすいからprivateにしないでpublicにしましょうと言っているのと同じように聞こえてしまいますね。
7
7
 
8
- 一部のメソッドだけを本番コードに影響しないように置き換えるって結構難しいですが、そもそも本番コードの設計レベルに影響するような置き換え方法は「無し」と思います。従来通りの泥臭い方法で置き換えるしかないのではないでしょうか?
8
+ 一部のメソッドだけを本番コードに影響しないように置き換えるって結構難しいですが、そもそも本番コードの設計レベルに影響するような置き換え方法は「無し」と思います。従来通りの泥臭い方法で置き換えるしかないのではないでしょうか?
9
+
10
+ ---
11
+ 【追記】
12
+ ちょっと質問の主旨から外れますが、instance methodの方が良いと言っている人も少なくないことにちょっとびっくりして、考えてみました。
13
+
14
+ オブジェクト指向プログラミングって非常に強力です。一般に手続き型フログラミングより適用できる場面が多いです。(直感的には95%くらい? もしかすると99%くらいかも。)
15
+
16
+ そして、instance methodはオブジェクト指向プログラミングの代表的な仕組みの一つであり、static methodは昔からある手続き型プログラミングの代表格です。
17
+ なので、一般的には手続き型よりオブジェクト指向型の方がよいよと言う意味で、instance methodを推奨している人も居るような気がします。
18
+
19
+ 一般論では全くその通りと思います。もしも、static methodが異様に目立つプログラムを見たら、オブジェクト指向を使いこなせないプログラマーが作ったのかな?とか思うかも。
20
+ しかし、ご質問のケースはstatic methodの方が設計的に適切な場合の話と感じたので、上記の議論には特に触れませんでした。
21
+
22
+ オブジェクト指向プログラミングが適切なケースは非常に多いので、結果としてinstance methodを使った方が適切な場面は多いと思います。しかし、手続き型プログラミングが適切な場合が皆無というわけではないのでその時にstatic methodを使った方が良い場面も少しはあります。後者を否定するとなかなか悲惨なプログラムが出来上がります。