![]() |
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Zitat:
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Zitat:
Delphi-Quellcode:
hätte erhält sie lokal auf dem Stack eine Kopie des Parameters, aber was kümmert das den Aufrufer?
const
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Zitat:
Delphi-Quellcode:
könnte es sein, dass die procedure Foo AValue intern verändert. Um das raus zu bekommen, muss ich mir die Procedure anschauen... Wenn da jedoch
Procedure Foo(Var AValue : integer)
Delphi-Quellcode:
steht, ist es klar, meine Variable bleibt erhalten... (Halte Dich jetzt nicht am Integer="Welchertyp auch immer" fest) (Abgesehen von Classen-Object-Inhalte die über Methoden verändert werden...)
Procedure Foo(Const AValue : Integer)
Warum hat developer X Var geschrieben? Weil er nicht wollte, das die ganze Struktur einmal kopiert werden muss... (Der kannte kein Const) Ich habe selber noch Millionen Zeilen Source-Code mit Var statt Const. |
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Im Bezug auf Strings hatte ich vor kurzem schonmal auf eine ähnliche Frage geantwortet:
![]() Zitat:
Zitat:
Delphi-Quellcode:
nicht nach dem Funktionsaufruf, aber z.b. Objektparameter deklariere ich auch gerne mit
const
Delphi-Quellcode:
, um zu signalisieren, dass ich das Objekt nicht verändere (auch wenn das aufgrund der fehlenden const correctness von Delphi natürlich funktionieren würde).
const
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Ok ich wollte nur darauf hinaus dass ein
Delphi-Quellcode:
für den Aufrufer genauso viel aussagt wie kein
const
Delphi-Quellcode:
.
const
Aus Performance-Gründen haben wir das
Delphi-Quellcode:
drin wo geht, es als Doku für Arme zu nutzen dass man verspricht das übergebene Objekt nicht zu manipulieren wäre natürlich auch eine Möglichkeit. Leider ist es dafür zu spät. Wäre vielleicht wirklich eine gute Idee gewesen. Naja, für's nächste Projekt... ;-)
const
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Zitat:
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Zitat:
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Sobald const,var und out im Spiel sind, weiß ich, das nicht der Wert übergeben wird.
Aber das
Delphi-Quellcode:
das gleiche ist wie
var Myvariable
Delphi-Quellcode:
muß ich mir immer wieder ins Bewußtsein holen. Meiner Meinung nach ist das nicht so Optimal.
@Myvariable
Gruß K-H |
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Ehrlich gesagt, verstehe ich die Verwirrung nicht: Man googele doch bitte mal CallByValue, CallByReference und CallByName. Das sind uralte Techniken. Das CONST soll doch das bei CallByValue obligatorische Kopieren des Wertes auf den Stack verhindern, um den nicht unnötig vollzumüllen und macht daher nur bei komplexen Datenstrukturen sowie in Delphi bei Strings Sinn. VAR resp. OUT bedeuten dagegen CallByReference, d.h. es wird die Adresse übergeben und damit ist der Wert der Variablen außerhalb der Prozedur veränderbar. CallByName kennt Delphi glücklicherweise nicht. Das gab es in ALGOL60, mit teilweise verblüffenden Ergebnissen.
|
AW: Code Optimisation: Benutzung von const in prozedur-Köpfen
Ja klar ist das uralt, aber warum zum Teufel gibt es dann kein
Delphi-Quellcode:
sondern nur ein
refconst Myvalue
Delphi-Quellcode:
? Wahrscheinlich dient es der Klarheit :mrgreen:
const Myvalue
Gruß k-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:02 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