JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich diesen Vorteil nicht zunutze!Keine wichtige Frage, aber ich habe mich oft gefragt, warum.
In meiner Firma gibt es viele Gelegenheitsschreiber in JSL und ein paar Schwergewichte.Ich bin ein unersättlicher Konsument des Codes anderer Leute (und lese) und habe hier eine Menge Code von mehr als 20 Leuten gelesen.Außerdem habe ich viele Codebeispiele gesehen, die hier in den Community-Foren veröffentlicht wurden.
Fast überall sehe ich, dass die Codeautoren die seltsame Entscheidung von JMP, Leerzeichen und Groß-/Kleinschreibung in Namen zu ignorieren, nicht ausnutzen.Nachfolgend finden Sie einige Beispiele.
Es scheint, dass die meisten Leute integrierte Funktionen nutzen – wie z Einfügen in() – mit Leerzeichen, aber bei benutzerdefinierten Namen ist dies im Allgemeinen nicht möglich.
Meine Hauptfrage ist warum?Ich finde, dass Code viel schneller zu lesen ist, wenn man Leerzeichen verwendet, als man es beim normalen Schreiben tun würde.
Ich kann verstehen, wenn jemand aus einer traditionellen Programmiersprache kommt, aber ich habe hier bei meiner Arbeit einige Leute gesehen, die zum ersten Mal Skripter schreiben, und sie werden im Allgemeinen das Gleiche tun (Leerzeichen für integrierte Namen verwenden, nicht verwenden). Abstand für benutzerdefinierte Namen).
Persönlich habe ich die Flexibilität, die JSL bei Namen bietet, sehr zu schätzen gelernt, aber ich bin gespannt, was andere Leute hier denken.
Beispiele:
aus @drewfoglia in diesem Post :

aus @Phil_Brown in diesem Post :

Die Datei libRecall_v2_0.jsl von @MikeD_Anderson
Und hier ist ein Auszug aus meinem Code – ich verwende häufig Leerzeichen in Namen:

Automatisierung und SkripterstellungBetreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Ich glaube, als ich anfing, JSL zu schreiben, habe ich mich sofort gegen alle Möglichkeiten entschieden, mit denen JMP die Namen festlegen kann. Das lag höchstwahrscheinlich daran, dass ich ihm nicht wirklich vertraute und es sich seltsam anfühlte (ich hatte etwas Hintergrundwissen zu Javascript und Python, ABER ich hatte es). (damals hatte ich für keine Sprache einen richtigen Programmierstil).
Heutzutage tue ich das Verwenden Sie beim Schreiben von JSL häufig eine Code-Neuformatierung, und es werden Leerzeichen zu JMP-Namen hinzugefügt (da ich das Einfügen von Leerzeichen in Operatornamen aktiviert habe). Und in meinen Namen verwende ich keine Leerzeichen (ich halte mich locker an eine Art Python-Styleguide für JSL). Dies hilft mir (manchmal) dabei, meine eigenen Namen von den in JMP erstellten Namen zu unterscheiden.
Betreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Nun ja, ich kann nicht für die anderen sprechen, aber für mich ist es größtenteils Gewohnheit. Ich habe in Basic, VB, LaTeX und Mathematica programmiert, lange bevor ich mit JSL angefangen habe. Für alle diese Sprachen gelten Einschränkungen hinsichtlich des Leerraums. Es hat für mich nie Sinn gemacht, meine Fähigkeiten für eine Sprache umzurüsten, wenn es mir dann schwerer fallen würde, in die anderen zurückzukehren oder in neue einzusteigen (wie zum Beispiel, als ich Python während des Lockdowns gelernt habe).
Betreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Ich habe definitiv eine Reihe von Problemen beim Wechsel von JSL zu Python/JavaScript!Wenn Sie viel Zeit damit verbringen, zwischen Sprachen zu wechseln, ist es sinnvoll, ein möglichst einheitliches Format beizubehalten.
Betreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Noch ein Gedanke dazu: Da die integrierten Variablen (Formeln usw.) über eine in den JSL-Editor integrierte syntaktische Hervorhebung verfügen, ist es leicht zu erkennen, dass es sich um etwas Besonderes handelt. Bei den benutzerdefinierten Dingen wird es schwierig zu sagen, bei einer oder zwei Variablen fehlt möglicherweise ein Semikolon zwischen ihnen. Dies würde das Debuggen bei längeren Skripten und Anwendungen erschweren.
Betreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Mit den Spaltennamen haben Sie Recht – sie stimmen nicht genau mit der Namensstruktur der meisten JSL-Namen überein. Es ist toll, von der neuen JMP18-Funktion zu hören – ich werde sie auf jeden Fall oft nutzen!
Ein weiteres Problem mit JMP-Spaltennamen, das erstaunlich wäre, wenn es behoben würde – die Tatsache, dass sie Vorrang vor lokalen / hier-Namen haben. Im Beispielskript hier kann ich den Here-Namen „Gerät“ nicht verwenden, da er denselben Namen wie eine Spalte in der kleinen Tabelle hat.
JSL sollte über einen strikten Spaltenreferenzmodus verfügen, der NUR den Zugriff auf Spalten (außerhalb von Spaltenformeln) über explizites Scoping zulässt. Das wäre eine schöne Sache...
Names Default to Here( 1 );
device = "ABC";
dt = New Table( "test",
<<NEW column=""></NEW>
Betreff: JSL ignoriert Leerzeichen für Namen, die meisten Leute machen sich das nicht zunutze!Hm, nachdem Sie zwei Stunden in das Debuggen eines Skripts investiert und dann herausgefunden haben, dass Concatenate manchmal zwischen Groß- und Kleinschreibung unterscheidet, werden Sie sich fragen, warum die Spalte „Alter“ sich von der Spalte „Alter“ und der Spalte „Alter“ unterscheiden kann:
(c) @jthi aus data-table-message-column-exists-colname
Mehr sehen...Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999; Dies war der Zeitpunkt, an dem ich beschloss, mich an eine Regel zu halten 
Dennoch wird es bald etwas einfacher:
Über dt << Has Column() hat ein Benutzer die Möglichkeit, nach einer Spalte zu suchen – und auszuwählen, ob die Übereinstimmung exakt oder mit einer gewissen Freiheit sein muss:

Betreff: JSL ignoriert Leerzeichen bei Namen, die meisten Leute nutzen dies nicht aus!Vielleicht liegt das Problem hier darin, dass es nicht möglich ist, einen String in eine Spalte zu schreiben, sondern nur in eine Zelle:
Names Default to Here( 1 );
dt = New Table( "test",
Add Rows( 1 ),
New Column( "DEVICE", Character)
);
device = "TOOL1";
dt:device[1] = device;
Betreff: JSL ignoriert Leerzeichen bei Namen, die meisten Leute nutzen dies nicht aus!ja, wenn lokale Namen und Spalten gleich heißen, macht es viel Spaß, beides parallel zu verwenden:
Names Default to Here( 1 );
xxx = "device";
dt = New Table( "test", add rows(10), New Column( "DEVICE", set each value (random integer(20))),
New Column( "VALUE", set each value (1))
);
device = "value";
Print(device);
distribution of DEVICE = Distribution( Continuous Distribution( Column( device ) ));
distribution Of VALUE = Distribution( Continuous Distribution( Column( Eval(device )) ));
another distribution of DEVICE = Distribution( Continuous Distribution( Column( "device" ) ));
:value << set formula(device);
wait(3);
:value << set each value (device)
Insgesamt gibt es 13 Regeln + einige Ausnahmen!
https://www.jmp.com/support/help/en/17.1/?os=win&source=application#page/jmp/rules-for-resolving-names.shtml
Betreff: JSL ignoriert Leerzeichen bei Namen, die meisten Leute nutzen dies nicht aus!Es gibt viele Regeln, aber es wäre schön, ein Flag in JSL zu haben, um einen strikten Modus zu aktivieren, sodass Namen ohne Gültigkeitsbereich gezwungenermaßen lokal sein müssen (also nur den lokalen Gültigkeitsbereich prüfen, nicht HIER, nicht GLOBAL und schon gar keine Spaltennamen) und alles, was nicht lokal ist, explizit gültig sein muss. Das wäre schön.