- PR -

静的メソッドとインスタンスメソッド

投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-01 11:33
板違いかもしれませんが、よろしくお願いいたします。

静的メソッドとするかインスタンスメソッドとするかの基準がわかりません。

インスタンスメソッドとしているものも
引数にインスタンス変数の情報をすべて渡してやれば静的メソッドとして定義できます。
まったくオブジェクト指向にそぐわないものだとは十分承知ですが
クラスを一切使わず、インスタンスメソッドを関数として作成することも可能です。

私の考えではクラスとしてインスタンスメソッドを使用したいのですが
Iさんの考えではメソッドを呼び出し側では1機能として1度呼び出すだけなのだから関数でよいと、関数を乱立されます。

Iさんを説得するインスタンスメソッドにするメリットをご教授ください。

[ メッセージ編集済み 編集者: 未記入 編集日時 2006-09-01 11:35 ]
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-01 11:41
引用:

未記入さんの書き込み (2006-09-01 11:33) より:
私の考えではクラスとしてインスタンスメソッドを使用したいのですが
Iさんの考えではメソッドを呼び出し側では1機能として1度呼び出すだけなのだから関数でよいと、関数を乱立されます。

Iさんを説得するインスタンスメソッドにするメリットをご教授ください。


これだけでは答えようがない。ケースバイケースなんだから。
一度呼び出すだけどうこうよりどこから呼び出されるか。
どれだけ汎用的なのか色んな要素があるでしょ。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-09-01 11:52
>Iさんを説得するインスタンスメソッドにするメリットをご教授ください。
Iさんって誰?
(隣のよっちゃんがいじめるんだよーって言われても困る。)

とりあえず、デザインパターンを色々見てみるといいかと。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-09-01 11:57
まず、なんのデータに対するどういう操作なのかが、あるはずですが。

String#valueOf(int)

を、(何かメリットがあるにしても)インスタンスメソッドにしようとは、思わないし。
「メリット」と言われても、なんとも言えませんね…。
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-01 11:58
ケースバイケースなのはわかりますが
静的メソッドにするのは呼び出す回数や使用頻度に影響されるものなのでしょうか?
汎用性がなければ静的メソッドにするのでしょうか?
未記入
大ベテラン
会議室デビュー日: 2006/05/19
投稿数: 125
投稿日時: 2006-09-01 12:07
引用:

mioさんの書き込み (2006-09-01 11:57) より:
まず、なんのデータに対するどういう操作なのかが、あるはずですが。

String#valueOf(int)

を、(何かメリットがあるにしても)インスタンスメソッドにしようとは、思わないし。
「メリット」と言われても、なんとも言えませんね…。




あるログインユーザーに対してメソッドを3つ作成しようとしています。
3つのメソッドはログインIDを引数で受け取ります。
使用頻度はあるフォームのOpenでメソッド1を
同じフォームのCloseでメソッド2を
任意の場所(別プロジェクト)でメソッドを3を呼びます。

私の場合は
ログインIDを引数にしたコンストラクタを作成し、メソッド3つはインスタンスメソッドにします。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2006-09-01 12:27
引用:

未記入さんの書き込み (2006-09-01 11:58) より:
静的メソッドにするのは呼び出す回数や使用頻度に影響されるものなのでしょうか?
汎用性がなければ静的メソッドにするのでしょうか?



そんなものには影響されないでしょう。インスタンスを必要とするか、必要としないか。インスタンスと関連しないメソッドとして、デザイン上の不自然さは無いかが関わるんじゃないですか。

[ メッセージ編集済み 編集者: 甕星 編集日時 2006-09-01 12:33 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-09-01 12:30
public メソッドなのか、private メソッドなのかでも話が変わってきますが、public の話をしているという前提で。

引用:

あるログインユーザーに対してメソッドを3つ作成しようとしています。
3つのメソッドはログインIDを引数で受け取ります。
使用頻度はあるフォームのOpenでメソッド1を
同じフォームのCloseでメソッド2を
任意の場所(別プロジェクト)でメソッドを3を呼びます。

私の場合は
ログインIDを引数にしたコンストラクタを作成し、メソッド3つはインスタンスメソッドにします。


そのクラスが何を表しているかによるでしょうね。
と言うか、呼び出す回数や使用頻度だとか、上記の例もメソッド中心で話をしているから、オブジェクト指向になってない気がしますが。

例えばそれは何を表すクラスですか?
_________________
囚人のジレンマな日々

スキルアップ/キャリアアップ(JOB@IT)