Dienstag, 23. September 2008

Klammern optional oder zwingend?

Beim Programmieren eines Beispiels für Blitzprog bin ich über das folgende Problem gestolpert:
outStream.write inStream.read
Da es in bp auch Funktionsobjekte gibt, ist eine solche Anweisung bisher zweideutig gewesen. Einerseits könnte man den Rückgabewert von inStream.read verwenden und diesen dann an outStream.write übergeben oder es wird das Funktionsobjekt selbst als Parameter für outStream.write betrachtet. Letzteres würde dazu führen, dass das Funktionsobjekt in einen String konvertiert wird und am Ende der Text "inStream.read" im Streambuffer steht.

Eine mögliche Option wäre es, den Rückgabewert nur bei Angabe der Klammern zu beachten (so wird es beispielsweise in Blitz3D realisiert). Das "Problem" bei diesem Ansatz ist, dass man nicht mehr
string.length
schreiben kann, sondern auf
string.length()
oder
string.getLength()
ausweichen muss.
Die getLength()-Methode möchte ich ungern verwenden, da man analog dazu eine set-Funktion für alle Variablen benötigt und dies sowohl einen zusätzlichen Aufwand als auch weitere Abhängigkeiten zur Folge hat (die ich gerne vermeide).

Bleibt noch die length()-Variante. Eigentlich eine gute Lösung, aber meiner Ansicht nach sollten Funktionen nach Tätigkeiten bzw. Verben benannt werden und "Länge" ist nun wirklich keine Tätigkeit.

Für welche Option ich mich entscheiden werde, steht noch nicht fest.

Keine Kommentare: