2011-12-13 9 views
0

私はこれに似ている機能を持って返す:ループ内のオブジェクトと値

public sub TestFunction() As Boolean 

On Error GoTo NewError: 

Dim testObject As New TestObject 

For TestVaiable 0 to 1000 
    TestObject.TestMethod(TestVariable) 

Next 

TestFunction = True 
Exit function 
NewError: 
TestFunction = False 
End Function 

私は2つの質問があります 1)には、ループ内でオブジェクトを再利用保つために悪い習慣ですか?私はそれが だとは思わない2)エラーがあれば真偽(false)を返すのは悪い習慣ですか?

答えて

1

ループ内の変数を再利用することをお勧めします。

ループ全体に対して同じ状態にあるオブジェクトを再利用するか、ループの性質に明確に関係する非常に単純な変更を行うことをお勧めします。

オブジェクトの再利用は、オブジェクトの再利用が難しくなるようにすることをお勧めします。

SubやFunctionから素早く復帰するのがよい習慣です。VBには無関係な他の言語に由来する早期復帰についての迷信があります。英語はラテン語ではできないからです。ナンセンスです。

エラーが発生したときにSubやFunctionから復帰するのは悪い習慣です。何らかの理由でそれが最も合理的なことでない限り、それ以上の処理は必要ありません。約200文字未満の短いコメントで説明できます。

このエラーが発生したときに戻ってくるのがなぜ大丈夫かを説明する200文字未満のコメントを入れないのは悪い習慣です。

+0

他の言語での例外の使用に慣れています。 vb6では、TestMethodにエラーがある場合、(通知のために)ログファイルに書き込み、呼び出し元のメソッド(TestFunction)にfalseを返します。その後、データベース(RDBMS)が更新され、エラーが発生したことが示されます。これは悪い習慣ですか? – w0051977

+1

それは妥当と聞こえる。ここでの多くの質問のように、与えられた情報の部分集合から言えることはあまりありませんが、ログレベルとレスポンスレベルの両方でエラーが発生していることに気付いています。私は 'Err.Raise'これは賢明かもしれないようです(特に、呼び出し元がブール値の成功値を期待している場合)。 –

関連する問題