#注)この質問は下記のリンク先の質問の続きとなります。
#未読の方はリンク先をお読みくださいませ。
#
#自作したメソッド・・・引数はなるべく省略すべき?(VB2005)
#http://oshiete1.goo.ne.jp/qa3409289.html
仮に、フォームにボタンが複数個あり(Name = btnA,btnB,btnC…)、いずれかのボタンをクリックすると、共通処理のモジュール「shori」を呼び出すプログラムを想定します。
コード
------------------------------------------------
Private Sub btnA_Click()
Dim hoge As integer = Phoge 'a)プロパティの値を設定
Dim foo As integer = Pfoo 'b)
Dim bar As integer = Pbar 'c)
Call syori(hoge,foo,bar)
End Sub
Private Sub btnB_Click()
Dim hoge As integer = Phoge 'a)プロパティの値を設定
Dim foo As integer = Pfoo 'b)
Dim bar As integer = Pbar 'c)
Call syori(hoge,foo,bar)
End Sub
:
:
Private Sub shori() 'ボタンクリックイベントの共通処理
'd) 処理
End Sub
------------------------------------------------
引数を省略しない形だと、(a)~(c)のコードを、全てのボタンのClickイベントに書き込むことになり、コードが煩雑になります。こういった場合、引数を省略する形、つまり(a)~(c)のコードを(d)の箇所へ書き込む手法は積極的に行うべきでしょうか?(Call文の形は、syori() となる)
ご助言よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
全てのボタンでhoge、foo、barが同一の設定であるならば、省略するべきです。
その場合の最良の対応は、VBではできなかったかもしれませんが、コールバックのメソッドを統一することでしょう。
ですが、将来的にでも同一設定ではなくなる可能性があるならば、引数として渡すべきでしょう。
個人的には、メソッドの用途が限定的であるならば、あえて汎用性を持たせる必要はないと思っています。
必要のない、将来使用するアテもない機能を持たせると、後々メンテしにくくなることもあります。
モジュール化において汎用性は重要ですが、メソッドの機能は想定される必要充分なものに限定するべきだと思います。(逆に言えば、汎用性を持たせる必要がある場合は、大量の引数も辞さずということです)
sgwjnさん
詳細な解説ありがとうございます。
やはり省略すべきですか。
大変参考になりました。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) vbaの計算 if elseと範囲について 6 2022/11/26 01:49
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ぱいソン
-
ブロックつきメソッドやyield文...
-
Rubyの超初心者です。「戻り値r...
-
【BrowseForFolderでデスクトッ...
-
get() と find() の違いについて
-
エクセルVBA オートフィルタで...
-
「arg」は何の略?
-
pythonのerrorコード
-
Rubyについて質問です
-
例外の再スロー時に、その原因...
-
パイソンのクラス
-
No route matches [GET] "/post...
-
教えてください。vb5.0
-
HSTLやSSTL等のI/Oピン
-
クラス名やモジュール名の競合...
-
関数の引数に複数のユーザ定義...
-
Ruby ハッシュ継承クラス、作成...
-
RubyでバイナリデータをIOスト...
-
エラー「メソッドまたはデータ...
-
.sub(/.+/,"aaaaaaa#{$&}"の置...
マンスリーランキングこのカテゴリの人気マンスリー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 オートフィルタで...
おすすめ情報