2016-06-16 18 views
0

私は冗長なコードを持っています。 Spはコードを最適化する際に助けてください。次のコードを最適化する方法

基本的に私はレジストリからバージョン番号をフェッチしています。それは、6つの経路のうちのいずれかにあり得る。だから私は以下のコードのように反復しています。私はこれ以上のものがあるかもしれないと感じています。以下のコードを最適化するのを助けてください。

Private Function as Integer() 

'Some Code 
versionnum = GetRegValue (hKey,path1,"Version","") 

If versionnum = "" Then 
    versionnum = GetRegValue (hKey,path2,"Version","") 
EndIf 

If versionnum = "" Then 
    versionnum = GetRegValue (hKey,path3,"Version","") 
EndIf 

If versionnum = "" Then 
    versionnum = GetRegValue (hKey,path4,"Version","") 
EndIf 

If versionnum = "" Then 
    versionnum = GetRegValue (hKey,path5,"Version","") 
EndIf 

If versionnum = "" Then 
    versionnum = GetRegValue (hKey,path6,"Version","") 
EndIf 

returnval = CompareVersion(Expected,versionnum) 
'Some Code 

End Function 
+2

を以下のコードを使用: それはこのようなものでなければなりません。 –

+0

*実際には遅すぎますか?私はそれを最適化する他の方法を考えることができますが、彼らはほとんど間違いなく過度のものです。 –

+1

ここで「最適化」とはどういう意味ですか? –

答えて

0

パスは永続的なので、パスを配列にしてループします。

btw CamelCaseまたはunder_scoreを使用すると、読みやすくなります。 と定数のALL_CAPS

私にはVB6はわかりませんが、意味があるはずです。

for(int i = 0; i < 6; ++i){ 
    if(versionNum == null){ 
     versionNum = GetRegValue (hKey,path[i],"Version",""); 
    } 
} 

returnval = CompareVersion(EXPECTED,versionNum) 
+0

ループ内で比較し、必要に応じて終了します。そうでない場合は、最後の結果を比較するだけです。 –

+0

ありがとうございます。私は今答えを修正:) – dovahkiin

-1

最後に私がpath1..path6とループを含むパスの配列を作成し、それを最適化するために

For i = 1 To 6 
    versionnum = GetRegValue(hKey, Choose(i, ProductKey1, ProductKey2, ProductKey3, ProductKey4, ProductKey5, ProductKey6), "displayversion", "") 
    If LenB(versionnum) Then Exit For 
Next 
関連する問題