![]() |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
Wenn es eine Warnung dafür geben sollte, müsste sie lauten "Lern es richtig zu machen!". In Sachen "with" muss ich leider VB einen Gummipunkt verpassen: Durch den dort noch nötigen Punktoperator ist die Eindeutigkeit trotz ersparter Schreibarbeit und Beibehaltung der Übersichtlichkeit gegeben. So wie er in Delphi realisiert ist, nutze ich ihn maximal für im Code erstellte und initialisierte VCL Komponenten unter sehr definierten Bedingungen, und selten wenn weniger als 5-8 Zeilen dadurch kürzer würden. Sobald die implizite Referenz auf der "rechten Seite" auftaucht, qualifiziere ich jedoch immer zumindest bis auf den Klassen/-Instanznamen. Birgt zwar noch immer die Risiken die genannt wurden, jedoch ist unser Code nicht für andere Programmierer gedacht/zugänglich, und wenn es nicht mehr geht fällt es ohnehin auf mich zurück :mrgreen: |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Mich nervt, daß es viele nette Dinge in Delphi gibt, die ich mir aber nie merken kann. :cry:
Statt einem WITH könnte man z.B. die Vorlage "VAR" nutzen, mit einem kurzen Variablennamen und arbeitet dann mit dieser Variable weiter. Mir fällt aber auf, daß man dieses VAR noch erweitern könnte, um ein
Delphi-Quellcode:
. :gruebel:
[var] :=[*];
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
Es ging bei with (VB6) nicht um ersparter Schreibarbeit sondern um Speicher zu sparen siehe 64K Limit pro Mod/Form das man wenn möglich einhalten sollte
(Win95 zeiten.) Mittlerweile aber auch überholt. gruss |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Also nichts gegen With. Es liegt vielleicht daran, dass einige With nur gelegentlich nutzen, so dass, wenn sie es dann doch nutzen, schon mal Flüchtigkeitsfehler passieren. Ich habe aus gegebenem Anlass schon sehr früh damit angefangen. Nicht nur, dass ich With nutze, nicht selten nutze ich es auch so
Delphi-Quellcode:
. Man muß im Kopf nur die Übersicht behalte, bzw. man muß paar Regeln beachten. Man muß wissen, dass sowohl
with Image1, Picture.Bitmap, Canvas, Pen, ClipRect do
Delphi-Quellcode:
, wie auch
Image1
Delphi-Quellcode:
ein
Bitmap
Delphi-Quellcode:
haben. Dann muß man wieder runter und trotz With auch mal ein
Height
Delphi-Quellcode:
schreiben wenn man sich darauf bezieht. Wie gesagt, es ist eher eine Frage der Übung.
Image1.Height
Was so daran übersichtlich sein?
Delphi-Quellcode:
Das ist übersichtlicher, oder?
Image1.Picture.Bitmap.Canvas.Rectangle(
Image1.Picture.Bitmap.Canvas.ClipRect.Left + 10, Image1.Picture.Bitmap.Canvas.ClipRect.Top + 15, Image1.Picture.Bitmap.Canvas.ClipRect.Right - 10, Image1.Picture.Bitmap.Canvas.ClipRect.Bottom - 15 );
Delphi-Quellcode:
Wobei ich mich in der letzten Zeit auch schon mal dabei ertappe, dass ich es so schreibe:
with Image1.Picture.Bitmap.Canvas, ClipRect do
Rectangle(Left + 10, Top + 15, Right - 10, Bottom - 15);
Delphi-Quellcode:
Es stimmt schon, wenn man nicht alleine an einem Code arbeitet, dann kann with schon unübersichtlich sein. Und beim Debuggen ist es tatsächlich schlimm, aber ich gehe immer davon aus, dass der Code ok ist und ich es nicht brauche. Und wenn, dann schriebe ich es für den Debugger um. Auch nicht wild.
var
C: TCanvas; R: TRect; begin ... C := Image1.Picture.Bitmap.Canvas; R := C.ClipRect; C.Rectangle(R.Left + 10, R.Top + 15, R.Right - 10, R.Bottom - 15); end; |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
Zitat:
Aber ich hatte eben auch schon öfter solche Fälle wie in meinem Beispiel. Wo eben durch Änderungen in Delphi oder in fremden Codes plötzlich im besten Fall Compilerfehler entstehen oder im schlechtesten Fall einfach etwas nicht mehr korrekt funktioniert ohne dass man weiß warum. Das kann zwar immer passieren, aber es ist richtig ärgerlich, wenn man dann nach stundenlangen Korrekturen beim Einchecken feststellt, dass man eigentlich überall nur wegen with korrigieren musste... Um bei deinem Beispiel zu bleiben:
Delphi-Quellcode:
Wenn du darin nun auch Width oder Height benutzt hättest, wäre das bis XE kein Problem gewesen. Nur hat TRect seit XE2 auch Width und Height. Und schon ist es nicht mehr eindeutig, ob das auf das Canvas oder auf ClipRect bezogen gemeint ist.
with Image1.Picture.Bitmap.Canvas, ClipRect do
// Dummyzeile wegen dem Syntaxhighlighter... |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Das ist dann natürlich blöd, gebe ich zu. Obwohl ich Width und Height bei Rect schon so oft vermißt habe, dass es mich wundert, dass die so lange dafür gebraucht haben.
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
Wobei ein benamtes WITH-Statemant auch was währe, so wie es beim ON-DO-Statement in einem Try-Except auch funktioniert.
Delphi-Quellcode:
oder
with X: Edit1.Lines do
X.Add('hallo);
Delphi-Quellcode:
oder
with X := Edit1.Lines do
Delphi-Quellcode:
(geht doch nicht)
with Edit1.Lines as X do
|
AW: Was nervt euch so, während der Programmierung oder so allgemein
besonders schön sind Konstrukte wie
Delphi-Quellcode:
With Form1, TreeView1, PageControl1 do
Items.AddChildFirst(nil, Caption + '-' + Activepage.Caption) |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
Zitat:
Zitat:
Aber zumindest einiges hätte man natürlich auch da schon machen können. Zitat:
Am besten dann mit ein paar hundert Zeilen in so einem with. :D |
AW: Was nervt euch so, während der Programmierung oder so allgemein
Zitat:
Obwohl, ich habe mal (ist aber schon lange her) in der Firma
Delphi-Quellcode:
geschrieben und bin von einem Kollegen abgemacht worden wieso ich so unverständlich programmiere. Das hat bitte so zu lauten
ShowMessage(Format('Die Koordinate ist x=%d, y=%d', [x, y]))
Delphi-Quellcode:
. Das versteht wenigstens jeder. :shock:
ShowMessage('Die Koordinate ist x=' + IntToStr(x) + ', y=' + IntToStr(y))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 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-2025 by Thomas Breitkreuz