![]() |
AW: Löschen in einer "for in" Schleife
Zitat:
Code:
so dass perfektes C# herauskommt, weiß somit jeder, was dabei abläuft.
foreach (var item in myEnumerable.Where({
... })) { myEnumerable.Remove(item); } |
AW: Löschen in einer "for in" Schleife
Zitat:
Meinst Du so?
Code:
Dein Ansatz verstößt gegen das
// Mikkey-Style:
foreach (var item in myEnumerable.Where(x=>(x.Foobar < 3 || !(x.Age > 65 && x.Status != Status.ManagementItem) &&) x.MoreStuffToCheck > somethingElse)) { myEnumerable.Remove(item); } ![]() ![]() Man muss doch beim Lesen des Codes gar nicht genau wissen, weshalb gelöscht wird (Level of abstraction, siehe oben). Wichtig ist, das es gemacht wird, weil die Einträge nicht mehr gültig sind. Das ergibt sich bei Clean-Code *sofort*. Bei deiner Variante muss man sich das erst mühsamm erarbeiten. Wieso soll denn gelöscht werden, wenn FooBar < 3? Oder wenn Age>65 und der Status != ManagementItem, aber in beiden Fällen auf jeden Fall 'MoreStuffToCheck>somethingElse sein muß? Verstehst Du das? Nö, ne? Aber 'ItemIsNotValidAnymore'(*) ist dann vielleicht doch ein wenig einfacher, meinst Du nicht? (*) Wobei man im konreten Fall natürlich einen etwas konkreteren Namen angeben sollte. Hier war das nur zu allgemeinen Verständnis etwas allgemein gehalten. Komplexer Code ist nicht erstrebenswert (KISS-Prinzip). |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz