Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#17

AW: Delphi "with variable do" in C#

  Alt 16. Sep 2010, 22:47
'with Obj do' ist also böse, ja? Gähn. Der Depp, der das falsch einsetzt ist böse. Nicht das Konstrukt an sich.

Wenn ich mit diesen DevExpress-Komponenten arbeite, die ellenlange Objekthierarchien beinhalten, ist so ein 'With' einfach mal Gold wert. Wenn man weiß, wie man es einsetzt.

Beispiel (Ich würde immer die erste Variante vorziehen):
Delphi-Quellcode:
With TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End do begin
  SpecialFoo := 1;
  SpecialBar := 2;
End;
// oder
TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End.SpecialFoo := 1;
TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End.SpecialBar := 2;
Da das in C# nicht geht, behelfe ich mir -mangels 'WITH'- mit einer privaten Methode ('Clean Code' lässt grüßen)

Code:
private void InitializeSpecialObject (var specialObject : SpecialObject);
{
  specialObject.specialFoo = 1;
  specialObject.specialBar = 2;
}

...
  InitializeSpecialObject (var TheObject.HasAnAttribute.WhichHasMore.Gosh.Will.ThisEver.End);
...
(Geht das mit dem 'Var' in C#?) Egal.

Hmmm. Irgendwie eine Steigerung in Punkto 'Lesbarkeit', oder?

Also: Das WITH war eine nette Idee, bevor es Klassen gab. Mit Klassen und doofen unvorsichtigen Programmierern kamen die Probleme. In der Folge hat man (u.A. bei C#) darauf verzichtet.

Und, hey, eine neue Methode, die auch noch in ihrem Namen beschreibt, was da eigentlich passiert, ist doch eh besser als ein extrem intelligent eingesetztes WITH. Denn da weiss ich immer noch nicht, wieso der Programmierer das WITH nu benutzt oder was er da eigentlich gemacht hat.

Gewöhn Dir also das 'WITH' ab. Nicht weil es böse ist, das kleine 'with', sondern weil es was Besseres gibt.

PS: (Visual)Basic kann das übrigens auch, mit dem WITH. Auch ein Grund, es *nicht* zu verwenden.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat