Best Practices für eine bessere Funktion
Ich habe ein Array, das ich auf einer Website anzeigen möchte unit public x[31]
. Über web3.js kann ich 32 verschiedene Aufrufe von x [0] bis x [31] erstellen. Alternativ könnte ich meinem Soliditätsvertrag eine Getter-Ansichtsfunktion hinzufügen, die nur das Array darstellt
function showX()
public
view
returns (uint[32] memory Xout)
{
Xout= x;
}
Mit dieser in meinen Soliditätsvertrag integrierten Funktion müsste ich dies nur einmal in meiner Javascript-Datei aufrufen und dann das Array haben. So kann ich entweder mehr Arbeit auf Javascript oder Solidität schieben. Ist eine der beiden Methoden effizienter / eleganter?
Antworten
Da es sich view
auf jeden Fall um Funktionen handelt, gibt es keinen großen Unterschied. Die Daten werden direkt von dem von Ihnen verwendeten Knoten abgerufen, und es gibt keine echte Transaktion für die Blockchain. Daher verwenden Sie entweder mehr Computer Ihres Browsers (JavaScript) oder Computer Ihres Knotens. Auch diese Anrufe kosten kein Benzin.
Aus architektonischer Sicht würde ich einfach Ihre Bedürfnisse berücksichtigen: Wenn Sie wahrscheinlich nicht viele Einträge abrufen müssen, ist es möglicherweise einfacher, sie einzeln abzurufen. Auf der anderen Seite handelt es sich wahrscheinlich um sehr unbedeutende Datenmengen, egal auf welche Weise Sie dies tun. Es macht also keinen wirklichen Unterschied in Bezug auf Geschwindigkeit oder Speicherbedarf. Ich denke auch nicht, dass einer der beiden Wege eleganter ist als der andere - berücksichtigen Sie einfach Ihre Bedürfnisse.