Code Review: Unterschied zwischen den Versionen

Aus Das Sopra Wiki
Dietsch (Diskussion | Beiträge)
Dietsch (Diskussion | Beiträge)
Zeile 97: Zeile 97:
Der folgende Code macht das Richtige: Er prüft ob es ein vorhergehendes Element in der Liste der <code>Results</code> gibt. Er verwendet dafür aber Exceptions, die sehr langsam sind, den Code unnötig schwierig zu lesen machen, und für diese Aufgabe nicht angemessen sind, da wir die Größe der Liste ja kennen.
Der folgende Code macht das Richtige: Er prüft ob es ein vorhergehendes Element in der Liste der <code>Results</code> gibt. Er verwendet dafür aber Exceptions, die sehr langsam sind, den Code unnötig schwierig zu lesen machen, und für diese Aufgabe nicht angemessen sind, da wir die Größe der Liste ja kennen.


<source lang="csharp">protected bool PreviousResultExists()
<syntaxhighlight lang="csharp">
protected bool PreviousResultExists()
{
{
     try
     try
Zeile 109: Zeile 110:
         return false;
         return false;
     }
     }
}</source>
}
</syntaxhighlight>
Verbesserungsvorschlag:
Verbesserungsvorschlag:


<source lang="csharp">protected bool PreviousResultExists() =>
<syntaxhighlight lang="csharp">
                 SelectedResultId > 0;</source>
protected bool PreviousResultExists() =>
                 SelectedResultId > 0;
</syntaxhighlight>
====Code vereinfachen====
====Code vereinfachen====


Es kann sein, dass der Code das Richtige auf angemessene Art und Weise macht, aber trotzdem einfacher zu lesen sein könnte.
Es kann sein, dass der Code das Richtige auf angemessene Art und Weise macht, aber trotzdem einfacher zu lesen sein könnte.


Im diesem Fall
Folgendes Beispiel


<source lang="csharp">public T GetComponent<T>()
<syntaxhighlight lang="csharp">
public T GetComponent<T>()
{
{
     foreach (var c in mComponents)
     foreach (var c in mComponents)
Zeile 130: Zeile 135:
     }
     }
     return default(T);
     return default(T);
}</source>
}
</syntaxhighlight>
lässt sich z.B. einfacher mit einer LINQ-Expression und einem besseren Methodennamen ausdrücken.
lässt sich z.B. einfacher mit einer LINQ-Expression und einem besseren Methodennamen ausdrücken.


<source lang="csharp">public T GetFirstComponent<T>()
<syntaxhighlight lang="csharp">
public T GetFirstComponent<T>()
{
{
     return mComponents.OfType<T>().First();
     return mComponents.OfType<T>().First();
}</source>
}
</syntaxhighlight>
 
===Architektur===
===Architektur===