Die anderen Antworten haben gute Arbeit geleistet, indem sie alternative Lösungen für das vorliegende Problem vorschlugen, also werde ich mir die größere Frage ansehen, die Sie gestellt haben, und Sie auf die Worte eines klugen Entwicklers verweisen, der schrieb ausführlich über die Probleme von eval .
Wenn ich sehe eval
Eine dunkle Wolke legt sich über den umgebenden Code, und ich beobachte die ganze Sache mit Argwohn und Misstrauen, bis ich mich vergewissert habe, dass ihre Verwendung gerechtfertigt ist.
[...]
eval
ist eine schlechte Idee, weil Fast jedes Mal, wenn ich gesehen habe, dass sie verwendet wurde, hat sie unvorhergesehene und unnötige Probleme verursacht.
Die wichtigen Teile sind "unvorhergesehen" und "unnötig". Unvorhergesehen, weil eval
hat eine großer Stapel Eine Liste, an die ich mich nicht ohne Weiteres erinnern kann. Unnötig, weil die Alternativen zu eval
in der Regel nicht viel mehr Arbeit bei der Umsetzung erfordern, während die Probleme, die durch eval
sind subtil und ruchlos.
[...]
eval
ist schlecht, weil es eine Menge subtiler Sicherheits- und Übersetzungsprobleme mit sich bringt, das Bytecode-Caching aushebelt, Syntax- und andere Fehler bis zur Laufzeit versteckt, schwer nachvollziehbare Aktionen aus der Ferne verursacht und die Syntaxhervorhebung aushebelt. Es macht Ihren Code einfach schlechter.
Sie sagten, Sie hätten darauf geachtet, dass Sie nicht auffliegen. eval()
auf Benutzereingaben. Großartig! Das ist ein guter erster Schritt - aber wie in dem Zitat erwähnt, ist das noch lange nicht das Ende der Liste der Dinge, über die man sich Gedanken machen muss, wenn man eval()
. Was diese Antwort und die anderen, die Sie bekommen haben, zusammenbringt, ist, dass eval()
ist eine falsche Wirtschaft. Es handelt sich zumindest um das Entstehen von technischen Schulden. Wie bei der Optimierung sind die beiden Antworten auf die Frage "Soll ich die eval()
?" sind "du solltest nicht" und "du solltest nicht dennoch ."