自作したメソッドに関して、引数はなるべく設定するべきでしょうか?それとも、引数は省略できるなら省略したほうがよいでしょうか?
下記(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)のようにあえて引数を設定したほうが、呼び出し先のメソッドがどういう処理を行っているかを掴めていいかな?と考え始めています。
ご助言よろしくお願い致します。
No.1
- 回答日時:
関数 foo() を見ると、
a) の場合は「Pbar のプロパティに対する操作」しかしません。Pbar に依存しています。
b) の場合は「整数に対する操作」ができます。
後者の方がモジュール化されていて、関数として適当だと思います。
koko_u_さん
モジュールの構成として、引数の形は(b)であるべきなのですね。
基本を知ることができて良かったです。
ご回答ありがとうございました。
※以下のリンク先に、この質問の続きを用意しました。なにかご助言を頂ければ幸いです。
自作したメソッド・・・こんな場合、引数は省略すべき?(VB2005)
http://oshiete1.goo.ne.jp/qa3410546.html
No.2ベストアンサー
- 回答日時:
引数は必要な分を設定するべきだと思います。
それを行う為に色々パターンを想定してメソッド作成に
臨むべきでしょう。
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
---------------------------------
書き方が正しいかどうかは忘れました。
また、呼び元では呼び出し先でどういった処理を行っているかを
掴む必要はなく、それが何を行うメソッドなのか、必要なパラメータ
は何か、どういった値が返却されるのかといったリファレンス
さえ用意すればいいと考えます。
naktakさん
例を挙げていただきありがとうございます。
やはり(b)の形の方が、処理に幅があるのですね。
Optionalは存在そのものを忘れかけていました。。
>どういった値が返却されるのかといったリファレンス
>さえ用意すればいいと考えます。
なるほど。。参考になります。
ご回答ありがとうございました。
※以下のリンク先に、この質問の続きを用意しました。なにかご助言を頂ければ幸いです。
自作したメソッド・・・こんな場合、引数は省略すべき?(VB2005)
http://oshiete1.goo.ne.jp/qa3410546.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ぱいソン
-
ハッシュ(単語数を数える) た...
-
pythonのerrorコード
-
パイソンのクラス
-
No route matches [GET] "/post...
-
Rubyについて質問です
-
Ruby:シルバーについて
-
実行時エラー450:引数の数が一...
-
正規表現で両端に文字列を置換
-
get() と find() の違いについて
-
VBA/GetTickCountの49.7日の境...
-
Csvファイルの最終行を取得する...
-
Rubyでクラスファイルをディレ...
-
テンプレートの特殊化でコンパ...
-
エラー「メソッドまたはデータ...
-
10円未満を切り捨てる方法は?
-
VBAで型が一致しないエラー(バ...
-
Ruby 特異メソッドのnewが先に...
-
Ruby
-
ruby:モジュール関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ぱいソン
-
ハッシュ(単語数を数える) た...
-
Access2000にExcel2000のデータ...
-
Rubyの超初心者です。「戻り値r...
-
Ruby Fileクラスについて
-
RubyのProcについて
-
自作したメソッド・・・こんな...
-
pythonのerrorコード
-
get() と find() の違いについて
-
「arg」は何の略?
-
エラー「メソッドまたはデータ...
-
What class are you in? には何...
-
パイソンのクラス
-
教えてください。vb5.0
-
No route matches [GET] "/post...
-
クラス名やモジュール名の競合...
-
VBAで型が一致しないエラー(バ...
-
Rubyについて質問です
-
実行時エラー450:引数の数が一...
-
エクセルVBA オートフィルタで...
おすすめ情報