アプリ版:「スタンプのみでお礼する」機能のリリースについて

自作したメソッドに関して、引数はなるべく設定するべきでしょうか?それとも、引数は省略できるなら省略したほうがよいでしょうか?
下記(a)、(b)は例です。

a)引数はなるべく省略
  ---------------------------------
  Private Sub hoge()
    Call foo()
  End Sub

  Private Sub foo()
    Dim hoga As integer = Pbar    'プロパティ「Pbar」の値を設定
    '処理
  End Sub
  ---------------------------------

b)あえて引数を設定
  ---------------------------------
  Private Sub hoge()
    Dim hoga As integer = Pbar    'プロパティ「Pbar」の値を設定
    Call foo(hoga)
  End Sub

  Private Sub foo(ByVal hoga As integer)
    '処理
  End Sub
  ---------------------------------

現在、(b)のようにあえて引数を設定したほうが、呼び出し先のメソッドがどういう処理を行っているかを掴めていいかな?と考え始めています。

ご助言よろしくお願い致します。

A 回答 (2件)

関数 foo() を見ると、



a) の場合は「Pbar のプロパティに対する操作」しかしません。Pbar に依存しています。

b) の場合は「整数に対する操作」ができます。

後者の方がモジュール化されていて、関数として適当だと思います。
    • good
    • 0
この回答へのお礼

koko_u_さん
モジュールの構成として、引数の形は(b)であるべきなのですね。
基本を知ることができて良かったです。
ご回答ありがとうございました。

※以下のリンク先に、この質問の続きを用意しました。なにかご助言を頂ければ幸いです。

自作したメソッド・・・こんな場合、引数は省略すべき?(VB2005)
http://oshiete1.goo.ne.jp/qa3410546.html

お礼日時:2007/10/08 04:48

引数は必要な分を設定するべきだと思います。


それを行う為に色々パターンを想定してメソッド作成に
臨むべきでしょう。

a)、b)の違いは#1の方も仰っている通りであり、
挙動として全くベツモノのメソッドになります。

ここで、a)もb)も可能性として存在する場合、
b)にした方がメソッドとしての利用価値が出てきます。
また、省略可能な引数とすることでもa)もb)も実現可能
となります。
例えば基本的にはある定まった値で処理するが、
例外的に指定された値で処理したい、など。

  ---------------------------------
  Private Sub hoge()
    Call foo() '引数無し呼び出し

    Dim hoga As integer = Pbar    'プロパティ「Pbar」の値を設定
    Call foo(hoga) '引数有り呼び出し
  End Sub

  Private Sub foo(Optional ByVal hoga As integer = Pbar)
    '処理
  End Sub
  ---------------------------------

書き方が正しいかどうかは忘れました。

また、呼び元では呼び出し先でどういった処理を行っているかを
掴む必要はなく、それが何を行うメソッドなのか、必要なパラメータ
は何か、どういった値が返却されるのかといったリファレンス
さえ用意すればいいと考えます。
    • good
    • 0
この回答へのお礼

naktakさん
例を挙げていただきありがとうございます。
やはり(b)の形の方が、処理に幅があるのですね。
Optionalは存在そのものを忘れかけていました。。

>どういった値が返却されるのかといったリファレンス
>さえ用意すればいいと考えます。
なるほど。。参考になります。
ご回答ありがとうございました。

※以下のリンク先に、この質問の続きを用意しました。なにかご助言を頂ければ幸いです。
自作したメソッド・・・こんな場合、引数は省略すべき?(VB2005)
http://oshiete1.goo.ne.jp/qa3410546.html

お礼日時:2007/10/08 04:49

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!