Somebodyisnobody / lcdocs

LC developer documentation extracted from OpenClonk
https://clonkspot.org/development
0 stars 0 forks source link

Funktionen veraltet-status prüfen #8

Closed Somebodyisnobody closed 2 years ago

Somebodyisnobody commented 2 years ago

Bei folgenden Funktionen ist unklar, ob sie veraltet sind:

Bei einigen Funktionen könnte eventuell auch auf FuncCall verwiesen werden, das kann ich aber fachlich nicht bewerten.

maxmitti commented 2 years ago

Call, ObjectCall, DefinitionCall, ProtectedCall und PrivateCall (letztere 2 gibts vll. nicht mehr in der Doku?) können alle auf FuncCall verweisen.

Ob man sie jetzt als deprecated ansieht oder nicht ist etwas schwierig zu sagen. in 95 % der Fälle sind sie wahrscheinlich veraltet, weil FuncCall das ersetzt. Aber wenn man halt die aufzurufende Funktion zur Laufzeit über einen String auswählen will gibt es keine richtige Alternative. Theoretisch kann man einen String basteln den man mit eval ausführt, aber das ist ein vielfaches komplizierter und langsamer als eine der Call-Funktionen zu verwenden.

maxmitti commented 2 years ago

Anstatt Par zu verwenden ist es in fast allen Fällen besser, benannte Parameter zu verwenden. Der einzige Vorteil von Par ist, dass man damit auf alle Parameter (egal ob benannt oder nicht) per Index zugreifen kann. Es bietet also quasi Array-artigen Zugriff auf die Parameter, was in seltenen Fällen passender sein kann, als benannte Parameter.

maxmitti commented 2 years ago

GetPathLength würde ich nicht wirklich als deprecated bezeichnen. Das hat Fulgen gemacht, als er GetPath eingebaut hat, was auch nur begrenzt das gleiche macht. Im Gegensatz zu den anderen Funktionen wäre GetPath zu verwenden in den allermeisten Fällen wo die Pfadlänge gefragt ist gewissermaßen umständlicher als GetPathLength.

Somebodyisnobody commented 2 years ago

Call, ObjectCall, DefinitionCall, ProtectedCall und PrivateCall (letztere 2 gibts vll. nicht mehr in der Doku?) können alle auf FuncCall verweisen.

Ob man sie jetzt als deprecated ansieht oder nicht ist etwas schwierig zu sagen. in 95 % der Fälle sind sie wahrscheinlich veraltet, weil FuncCall das ersetzt. Aber wenn man halt die aufzurufende Funktion zur Laufzeit über einen String auswählen will gibt es keine richtige Alternative. Theoretisch kann man einen String basteln den man mit eval ausführt, aber das ist ein vielfaches komplizierter und langsamer als eine der Call-Funktionen zu verwenden.

ProtectedCall und PrivateCall gibt es noch, sind aber nicht als deprecated markiert gewesen. Ich habe noch GameCall und GameCallEx gefunden. Wie werden diese behandelt?

maxmitti commented 2 years ago

Stimmt, die gibt es auch noch. GameCall(Ex) haben nicht wirklich eine alternative, also würde ich sie auch nicht als deprecated markieren.

Somebodyisnobody commented 2 years ago

Perfekt, dann haben wir das abgehakt!