pair => pair.Key, pair => pair.Value

September 27th, 2012, 17:22 > da/Y\ax

Kleine Plauderei aus dem beruflichen Nähkästchen eines leicht gefrusteten Coders. Normale Menschen klicken bitte weiter, hier gibt es nichts zu sehen.

In meiner Tätigkeit als Codemonkey kommen mir ja immer wieder befremdliche Dinge unter, die irgendwelche anderen Codeäffchen zusammengetippselt haben. Und manchmal reicht ein einzelner Facepalm nicht mehr aus, da der fail einfach zu epic ist. So auch heute, als ich über folgendes Lehrbuchbeispiel für Security by Obscurity gestoßen bin:

Aufgabenstellung: Der Anwender soll ein paar Daten in eine Tabelle klopfen, aus diesen Daten werden dann über einen Template-Mechanismus XML-Dateien erzeugt. Echt kein Hexenwerk. So sieht das aus:

Nun müssen also die eingebenen Daten irgendwie weiter gereicht werden, um von einer anderen Klasse verarbeitet zu werden.

Der Typ, der hier am Werk war, hat sich jetzt Dictionaries zusammengebaut, mit dem Attributnamen als Key. Soweit gehe ich d'accord. Anstatt nun aber ganz simpel die Werte als Strings abzulegen, hat der Typ Windows.System.Form.Textboxes genommen!! WTF? Und nicht genug damit! Nein, nein. Erst sammelt er sich nämlich die "Invarianten" und die "Varianten" Daten in 2 unterschiedlichen Dictionaries, nur um die dann mitten im Aufruf der verarbeitenden Methode zu einem einzigen Dictionary zusammen zu mergen. Das gibt dann sowas:

count = KLASSE.Do(actionName,
new Dictionary().Union(variantDataGridLinkedBox).ToDictionary(pair => pair.Key, pair => pair.Value).Union(invariantDataGridLinkedBox).ToDictionary(pair => pair.Key, pair => pair.Value));

Hö hö... höhöhö.... mwahahhaa... WAAAHAHAAAAA :lol:

Geht's bitte noch umständlicher? Klar! Er initialisiert sich nämlich diese Dictionaries vorher auch noch super hirnverbrannt mit diversen Loops, in denen er dann erstmal leere Textboxen erzeugt(!) um nachher was zu haben, wo er seine Daten dann reinschreiben kann! AUA!!!

Ich also alles rausgeworfen inklusive Initialisierungsfunktionen. Die Daten werden jetzt just-in-time eingesammelt, in ein einfaches Dictionary aus Strings gesteckt und der gleiche Aufruf sieht nachher so aus:

count = KLASSE.Do(actionName,dataToWrite);

ja, zugegeben, das sieht nicht so sophisticated aus. Aber ich kann danach wenigstens wieder ohne Knoten im Hirn ins Bett gehen.

2 Meinungen zu “pair => pair.Key, pair => pair.Value”

  1. fronti meinte:

    Ich hab 2 cerdáchtige für den code wo bei einem das mit den sinnlosen initialschleifen nicht passt

  2. CoderAtWork meinte:

    Das kommt davon, wenn man Artikel aus einschlägigen .Net – Programmierzeitschriften ernst nimmt ;-)

Antworten

Dein Kommentar


Halte Dich bitte an die Spielregeln. Welche Emoticons du verwenden kannst, steht hier.
 
 Wer HTML kann, ist klar im Vorteil. Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
 
 Bei der Menge an Spam-Kommentaren passiert es hin und wieder, dass ein Kommentar vom Spamfilter gefressen wird. Bitte sei mir nicht böse aber ich habe weder Zeit noch Lust, solch verloren gegangenen Kommentaren hinterher zu forschen. Wenn das öfters passiert, schreib' mir 'ne Mail damit ich dich whitelisten kann.

Ihr Browser versucht gerade eine Seite aus dem sogenannten Internet auszudrucken. Das Internet ist ein weltweites Netzwerk von Computern, das den Menschen ganz neue Möglichkeiten der Kommunikation bietet.

Da Politiker im Regelfall von neuen Dingen nichts verstehen, halten wir es für notwendig, sie davor zu schützen. Dies ist im beidseitigen Interesse, da unnötige Angstzustände bei ihnen verhindert werden, ebenso wie es uns vor profilierungs- und machtsüchtigen Politikern schützt.

Sollten Sie der Meinung sein, dass Sie diese Internetseite dennoch sehen sollten, so können Sie jederzeit durch normalen Gebrauch eines Internetbrowsers darauf zugreifen. Dazu sind aber minimale Computerkenntnisse erforderlich. Sollten Sie diese nicht haben, vergessen Sie einfach dieses Internet und lassen uns in Ruhe.

Die Umgehung dieser Ausdrucksperre ist nach §95a UrhG verboten.

Mehr Informationen unter www.politiker-stopp.de.