2009-07-21 6 views
2

ASP.NETのドロップダウンリストを読み込んでいます。この例では、temp変数またはインラインを使用しますか?

は、これを行うにどんな利点がある::このオーバー

Private Sub LoadSeasonsListbox(ByVal seasons As List(Of Season)) 
     Dim li As ListItem 
     For Each s As Season In seasons 
     li = New ListItem(s.SeasonDescription, s.SeasonCodeID) 
     frm.SeasonsList.Items.Add(li) 
     Next 
    End Sub 

Private Sub LoadSeasonsListbox(ByVal seasons As List(Of Season)) 
    For Each s As Season In seasons 
     frm.SeasonsList.Items.Add(New ListItem(s.SeasonDescription, s.SeasonCodeID)) 
    Next 
End Sub 

答えて

4

デバッグ時に最初に追加すると、ListItemが追加されやすくなります。

最初は、第1のオーバーseconfの唯一の利点は、それことである

+0

+1デバッグの容易さは良い点です。 – AnthonyWJones

0

私はそれらの間の任意の実際のパフォーマンスの違いがあると思い、また正しさの違いはありません。

私は最初にデバッグするのが簡単だと思います。なぜなら、行の追加とliの内容の表示を簡単にやめることができるからです。

0

私はと思っていますが、両方とも実際には同じバイトコードにコンパイルされます。しかし、私は通常、新しい変数を使用するときに導入する傾向があります。またはコードを明確にするとき。この場合、文は非常に複雑ではなく、すぐに目に見える形で表示されるため、一時変数を使用することには実質的な利点はありません。

これは単なる推測です。リフレクターなどで確認してください。

0

(...が、一部が読み困難かもしれより高い高さ)一部が読みやすくを見つけることが下部幅を有しています一度だけ使用される変数を削除します。リファクタリングでは何かが望ましいことがあります。

一方、このような中間変数を使用すると、関連する手順を少しずつ分けることで、コードを少しだけ読みやすくすることができます。

+0

私はそれを見ているので、変数は方法1で使用されています。したがって、それを次のように変更することができます: "最初のものよりも2番目の利点は..." – Burkhard

+0

@Burkhard:おっと、編集ありがとう。 – AnthonyWJones

0

私はもともと私のサンプルデータでうまく動作したら、メソッド1を使ってそれを書き、デバッグし、次にメソッド2を使ってデバッグします。

+0

あなたは1)読みやすく/テスト可能ですが、それでも2に変更することに同意しますか?)どうして? –

+0

@Henk Holterman - メソッド2はクラス全体の可読性を向上させますが、メソッド1はその関数/サブの読みやすさに焦点を当てています。その機能/サブがもはや私の注意の中心ではなくなった(設計どおりに動作する)ので、私はそれを圧縮したい。 –

0

私はVB.NETコードを書くことができないので、LINQ(とC#を使用することもできます)。

private void LoadSeasonsListbox(IEnumerable<Season> seasons) 
{ 
    frm.SeasonsList.Items.AddRange(seasons 
     .Select(s => new ListItem(s.SeasonDescription, s.SeasonCodeID)) 
     .ToArray()); 
} 

私はこのループを嫌うので、私はオブジェクトをコピーまたは翻訳するだけなので、コードが非常に乱雑です。私は拡張メソッドを書くことについても考えます。

private void LoadSeasonsListbox(IEnumerable<Season> seasons) 
{ 
    frm.SeasonsList.Items.AddRange(
     seasons.ToListItems(s => s.SeasonDescription, s => s.SeasonCodeID)); 
} 
0

私は両方の例が同等であると思いますが、私は後者を好んでいます。

関連する問題