[Lazarus] 'with' is evil, isn't it?
Jürgen Hestermann
juergen.hestermann at gmx.de
Tue Aug 2 19:11:55 CEST 2011
>> -----------------------------------------------------------------------
>> with Uebergabe^, Qarray[QuaderNr]^.Teilung[R] do
>> AusdehnungInMeter := (Feldgrenzen[length(Einteilungen)+1] -
>> Feldgrenzen[1]) *
>>
EinheitAuswahl[Einheit.Koord[R]].Faktor;
>> -----------------------------------------------------------------------
>>
> Why put Uebergabe^ in the with? It appears only once?
Yes, that's true. I just picked an arbitrary example from my code to get
the idea. I have lots of with statements with similar "with-variables".
Sometimes they are used only once and in other cases they are used more
often.
> Assuming objects, better add helper methods
> function TFooTeilung.GetLastFirstDiff;
> begin
> Result := Feldgrenzen[ length(Einteilungen)+1 ] - Feldgrenzen[1];
> end
I don't want to add runtime penalties by calling functions (with stack
handling overhead).
> AusdehnungInMeter :=
> Qarray[QuaderNr]^.Teilung[R]. GetLastFirstDiff
> * EinheitAuswahl[Uebergabe^.Einheit.Koord[R]].Faktor;
> You can also introduce
> FeldgrenzenBackwards[x]
> where 0 returns the last, 1 the one before last ....
Same reason: It's slower and does not add any benefit.
Of course, there is an inifite way of coding things and the with
statement is one of them.
More information about the Lazarus
mailing list