2009-07-21 4 views
2

Ich lade eine ASP.NET-Dropdown-Liste.Verwenden Sie Temp-Variable oder Inline in diesem Beispiel?

Gibt es einen Vorteil, dies zu tun ::

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 

über diese:

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 

Antwort

4

Beim Debuggen erleichtert der erste die Überprüfung der hinzugefügten ListItem.

Der erste hat auch eine geringere Breite auf, die etwas leichter finden lesen (eine höhere Höhe, aber die einige schwieriger finden zu lesen ...)

+0

+1 Debugging ist ein guter Punkt. – AnthonyWJones

0

Ich glaube nicht, dass es keine wirkliche Performance-Unterschied zwischen ihnen, noch Richtigkeit Unterschied.

Ich denke, die erste ist einfacher zu debuggen, weil Sie leicht auf die Zeile Hinzufügen stoppen und den Inhalt von li anzeigen können.

0

Ich denke, , die beide tatsächlich auf den gleichen Bytecode kompilieren werden. Normalerweise tendiere ich jedoch nur dazu, neue Variablen einzuführen, wenn ich sie verwenden werde. Oder wenn es den Code klarer macht. In diesem Fall ist die Aussage kaum komplex und sofort sichtbar, was Sie tun, so dass es wahrscheinlich keinen wirklichen Nutzen für die Verwendung einer temporären Variable gibt.

Es ist nur eine Vermutung. Überprüfen Sie mit Reflektor oder ähnlichem.

0

Der einzige Vorteil der seconf über den ersten, dass es löscht eine Variable, die nur einmal verwendet wird. Etwas, das beim Refactoring manchmal wünschenswert ist.

Auf der anderen Seite kann die Verwendung einer intermediären Variablen wie dieser den Code etwas lesbarer machen, indem die einzelnen Schritte ein wenig durchbrochen werden.

+0

Wie ich es sehe, wird die Variable in Methode 1 verwendet. So können Sie es ändern zu: "Der einzige Vorteil der zweiten gegenüber der ersten ist ..." – Burkhard

+0

@Burkhard: Ups, bearbeitet, danke. – AnthonyWJones

0

Ich würde es ursprünglich schreiben und debuggen mit Methode 1, dann refactor zu Methode 2, sobald ich es gut mit meinen Beispieldaten arbeiten.

+0

Sie stimmen also zu, dass 1) lesbarer/testbarer ist, aber Sie würden es immer noch zu 2) ändern? Warum? –

+0

@Henk Holterman - Methode 2 erhöht die Lesbarkeit der Klasse als Ganzes, während Methode 1 sich auf die Lesbarkeit dieser Funktion/Unter konzentriert. Sobald diese Funktion/Unterfunktion nicht mehr im Mittelpunkt meiner Aufmerksamkeit steht (wie geplant), möchte ich sie komprimieren. –

0

Sie können es auch mit LINQ (und C#, weil ich VB.NET-Code schreiben kann;).

Ich bevorzuge diese Lösung, weil ich hasse diese Schleifen nur Kopieren oder Übersetzen von Objekten - sie überfluten den Code so sehr. Ich würde sogar darüber nachdenken, eine Erweiterungsmethode zu schreiben.

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

Ich denke, beide Beispiele sind gleichwertig, aber ich bevorzuge letztere.