タイトル : Re^4: 長くなりすぎるプロシージャ名 投稿日 : 2008/05/30(Fri) 18:09 投稿者 : ひでと
ありがとうございます。(自宅から レスしてます) > > 'イメージ図のため引数は省略。また戻り値の有無もここでは区別しないので仮にSubとしている > Public Sub 処理() > 処理1 > 処理2 > : > 処理N > End Sub > > Public Sub 処理1() > 処理11 > 処理12 > : > 処理1N > End Sub > > Public Sub 処理11() > 処理111 > 処理112 > : > 処理11N > End Sub > > 例えば、上記のようなイメージなのだと思いますが、 > 末端の処理111〜処理11Nが比較的単純だとして、 > それを束ねる処理11や処理1は1つの機能だけを実現しているでしょうか? 「1つの機能」の概念が理解できないのですが? Public Sub 処理11(選択 as Integer) Select Case 選択 Case1: 処理111 Case2: 処理112 : CaseN: 処理11N End Select End Sub この場合は1つの機能とは言えないのでしょうか? 実際にはこのような処理ばかりです。 > > また、例えば、この中で処理111は処理1の中の処理11から呼び出されるわけですが、 > 処理111は処理1や処理11に依存した内容でしょうか? > 依存しない内容であれば、処理1_処理11_処理111という名前にする必要はなく、 > 単に処理111でよいはずです。 上記のように選択肢で分岐してますので、依存した内容です。 > > 例えば、ある文字列が数値かどうかを判定するメソッドを考えるとき、 > Public Function IsNumber(ByVal stringValue As String) As Boolean > のような名前にし、処理1_処理11_IsNumberとは命名しないですよね。 > > 逆に処理1_処理11_処理111という名前にしかならないようなメソッドであれば、 > 処理1_処理11の中に直接記述すればよいのではないでしょうか? > > 機能を切り出してメソッド化するときは、呼び出し元のメソッドや > 呼び出し元のメソッドから呼び出される他のメソッドに依存してはいけません。 > こういうような状況で強引に切り出されるメソッドはたいてい > 機能で分割されたメソッドではなく、長い長いメソッドを短く見せかけるためだけに > 分割されたものである場合が多いです。短いから良いとは限りません。 おっしゃるとおり長いメソッドを見せかけだけ短くしたものと言えると思います。 プログラムの途中で入力の必要が無く、一連の内容を順序どおりに実行される 部分なので、手続き型のプログラム部分です。 直接記述していくと、正直自分でも処理が分からなくなる為、短い処理に分割しています。 このような場合に、他のメソッドに依存しないように作るにはどのように すればいいのでしょうか? 自己レスで入れたように、クラス単位で分割を試みていますが、 手続き的な処理の本質は変えられないのですが、こういうのはまずいのでしょうか? プロシージャが上位の処理に依存した処理の為、クラスをPrivateで上位のクラスの 中に記載したいと考えています。 そうすると、また見た目のクラスが長くなり、自分でも混乱しそうですが、 他から参照できないようにしたいのです。 そのような手法はありますでしょうか? |