Ist es schlecht, Unicode-Zeichen in Variablennamen zu verwenden? [geschlossen]


82

Ich habe kürzlich versucht, einen Ranking-Algorithmus, AllegSkill, in Python 3 zu implementieren.

So sieht die Mathematik aus:

Alt-Text

Nicht wirklich.

Das habe ich dann geschrieben:

t = (µw-µl)/c  # those are used in
e = ε/c        # multiple places.
σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Ich dachte eigentlich, dass es Python 3 schade ist, keine oder nur ²variable Namen zu akzeptieren .

>>> √ = lambda x: x**.5
  File "<stdin>", line 1
    √ = lambda x: x**.5
      ^
SyntaxError: invalid character in identifier

Bin ich verrückt? Hätte ich auf eine reine ASCII-Version zurückgreifen sollen? Warum? Wäre es nicht schwieriger, eine Nur-ASCII-Version der obigen Formeln auf Gleichwertigkeit mit den Formeln zu überprüfen?

Wohlgemerkt, ich verstehe, dass einige Unicode-Glyphen sehr ähnlich aussehen und andere wie like (oder ist das ▗▖) oder ╦ im geschriebenen Code einfach keinen Sinn ergeben. Dies ist jedoch bei Mathematik oder Pfeilsymbolen kaum der Fall.


Auf Anfrage wäre die Nur-ASCII-Version etwas in der Art von:

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

... für jeden Schritt des Algorithmus.


58
Das ist verrückt, völlig unlesbar und unbeschreiblich cool.
Dominique McDonnell


3
Ich finde es sehr gut, dass Python keine arithmetischen Operationen als Variablen akzeptiert. Ein Quadratwurzelzeichen sollte die Operation zum Ziehen einer Quadratwurzel bezeichnen und keine Variable sein.
David Thornley

4
@ David, es gibt keinen solchen Unterschied in Python. Tatsächlich sqrt = lambda x: x**.5wird mir eine Funktion (genauer gesagt, eine aufrufbare): sqrt(2) => 1.41421356237.
Badp

4
OutputStream.🚽;

Antworten:


54

Ich fühle mich stark , dass nur Ersatz σmit soder sigmawäre dumm, angrenzend an hirntot.

Was ist der potenzielle Gewinn? Okay, lass uns nachsehen …

  • Verbessert es die Lesbarkeit? Nein, nicht im geringsten. Wäre dies der Fall, hätte die ursprüngliche Formel zweifellos auch lateinische Buchstaben verwendet.

  • Verbessert es die Beschreibbarkeit? Auf den ersten Blick ja. Aber am zweiten, nein. Weil sich diese Formel niemals ändern wird (naja, niemals). Normalerweise muss der Code weder geändert noch mithilfe dieser Variablen erweitert werden. Beschreibbarkeit ist also - nur dieses eine Mal - kein Problem.

Persönlich denke ich, dass Programmiersprachen einen Vorteil gegenüber mathematischen Formeln haben: Sie können aussagekräftige, aussagekräftige Bezeichner verwenden. In der Mathematik ist dies normalerweise nicht der Fall, daher greifen wir auf Ein-Buchstaben-Variablen zurück und machen sie gelegentlich zu Griechisch.

Aber Griechisch ist nicht das Problem. Die nicht beschreibenden Ein-Buchstaben-Bezeichner sind.

So halten Sie entweder die ursprüngliche Schreibweise ... nach allem, wenn die Programmiersprache funktioniert in Identifikatoren Unicode unterstützt, so gibt es keine technische Barriere. Oder verwenden Sie aussagekräftige Kennungen. Ersetzen Sie griechische Glyphen nicht einfach durch lateinische. Oder arabische oder Hindi.


3
Einige Tools können keine Unicode-Zeichen lesen, obwohl die Programmiersprache deren Verwendung unterstützt. Ich würde es nicht als hirntote Entscheidung bezeichnen, nicht-Unicode-Variablennamen zu verwenden. Dies gilt auch noch 2,5 Jahre nach Ihrem Posting.
Gary S. Weaver

44
@ Gary "Einige Tools können Unicode nicht lesen" - also ändern Sie die Tools, sie sind Mist. Entschuldigung, es ist 2013 und ich habe kein Mitgefühl und noch weniger Geduld für solche Tools. Unablässig auf defekte Werkzeuge zu achten, verhindert den Fortschritt.
Konrad Rudolph

3
@KonradRudolph Mein Punkt ist, dass einige Tools Unicode aus irgendeinem Grund nicht unterstützen und nicht unterstützen können. "Ändern der Tools" ist daher nicht immer die richtige Antwort. Ich stimme zu, dass Unicode gut ist und Tools es verstehen sollten, aber das ist nicht immer eine Option.

3
@ John Ich behaupte, dass "Ändern Sie die Werkzeuge" eine angemessene Antwort ist. Ihr Beispiel veranschaulicht insbesondere einen solchen Fall: Java- .propertiesDateien sind trivial zu analysieren. Wenn Sie wirklich mit einer Toolkette gearbeitet haben, die hinter .propertiesDateien kein Unicode unterstützt, ist es durchaus sinnvoll , diese Toolkette zu löschen (und sie entweder selbst zu ersetzen, eine Alternative zu finden oder im schlimmsten Fall eine in Auftrag zu geben) ). Dies gilt natürlich nicht für Altsysteme. Für ältere Systeme gilt jedoch keine der Überlegungen zu bewährten Methoden.
Konrad Rudolph

8
Diese "Austausch" -Probleme, von denen Sie sprechen, scheinen in erster Linie das Problem von Java- und Windows-Entwicklern zu sein. Der größte Teil der Linux-Welt wurde vor über einem Jahrzehnt auf UTF-8 standardisiert. Es ist definitiv ein Toolchain-Problem. Verwenden Sie keine schlechten Werkzeuge mehr.
Rich Remer

33

Persönlich würde ich es hassen, Code zu sehen, in dem ich die Zeichentabelle aufrufen muss, um sie erneut einzugeben. Obwohl der Unicode genau mit dem übereinstimmt, was im Algorithmus enthalten ist, beeinträchtigt er die Lesbarkeit und die Editierbarkeit. Einige Editoren haben möglicherweise nicht einmal eine Schriftart, die dieses Zeichen unterstützt.

Was ist mit einer Alternative und einfach oben haben //µ = uund alles in ASCII schreiben?


14
Übrigens, nehmen Sie nicht an, dass alle Tastaturen Standard-Codierungstasten bequem zugänglich machen. Mein Tastaturlayout benötigt drei Tasten zum Eingeben {und }(was übrigens bei ttys fehlschlägt) und es fehlt `und ~... wie würde ein Bash-Skript nicht erfordern, dass ich eine Zeichentabelle verwende, wenn ich keine benutzerdefinierte Tastentabelle verwende? :)
badp

4
Ich habe neben meiner Muttersprache eine griechische Tastatur installiert und kann mit einem Tastendruck zwischen diesen umschalten. Dies ist nützlich, wenn Sie über Mathematik in IM / E-Mail sprechen ... und ich habe bereits darüber nachgedacht, sie in Python-Skripten zu verwenden.
Liori

18
Pfui. Einfach die griechischen Buchstaben durch einfache ersetzen? Kein Gewinn. Verwenden Sie aussagekräftige Variablennamen oder halten Sie sich an die Namen aus dem Papier. Kein Grund, kreativ zu werden.
Konrad Rudolph

12
Nur nicht mischen µ und μ ...
Endolith

4
Angemessene Editoren verfügen über angemessene Eingabemethoden für Unicode, die das Bearbeiten von Code wie folgt vereinfachen. Zum Beispiel unterstützt Emacs (unter anderem) die TeXund rfc1345. TeXist genau das, wonach es sich anhört; Sie können damit \sigmafür σund \tofür eingeben . rfc1345gibt Ihnen einige Kombinationen wie &s*für σund &->für . Als Faustregel sorge ich mich nicht darum, Programmierer unterzubringen, die weniger fähige Editoren als Emacs verwenden.
Tikhon Jelvis

31

Bei diesem Argument wird davon ausgegangen, dass Sie keine Probleme mit der Eingabe von Unicodes oder dem Lesen von griechischen Buchstaben haben

Hier ist das Argument: Möchten Sie pi oder circular_ratio?

In diesem Fall würde ich pi dem circular_ratio vorziehen, weil ich pi seit meiner Grundschulzeit kennengelernt habe und ich davon ausgehen kann, dass die Definition von pi für jeden Programmierer, der sein Geld wert ist, gut verankert ist. Daher würde es mir nichts ausmachen, π als kreisförmiges Verhältnis zu tippen.

Aber was ist mit

winner_sigma_new = ( winner_sigma ** 2 *
                    ( 1 -
                     ( winner_sigma ** 2 -
                       general_uncertainty ** 2
                     ) * Wwin(t,e)
                    ) + dynamics ** 2
                   )**.5

oder

σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5

Für mich sind beide Versionen genauso undurchsichtig wie pioder π, außer dass ich diese Formel in der Grundschule nicht gelernt habe. winner_sigmaund Wwinbedeutet nichts für mich oder für andere, die den Code lesen und weder σwverwenden, noch verbessern sie ihn.

Also, beschreibende Namen, zB total_score, winning_ratiousw. erhöhen würde Lesbarkeit viel besser als die Verwendung von ASCII - Namen , die nur griechische Buchstaben aussprechen . Das Problem ist nicht, dass ich keine griechischen Buchstaben lesen kann, aber ich kann die Zeichen (griechisch oder nicht) nicht mit einer "Bedeutung" der Variablen verknüpfen.

Sie verstehen sicherlich das Problem selbst , wenn Sie kommentiert: You should have seen the paper. It's just eight pages.... Das Problem ist, wenn Sie Ihre Variablennamen auf ein Papier stützen, bei dem Namen mit einem Buchstaben aus Gründen der Prägnanz und nicht der Lesbarkeit ausgewählt werden (unabhängig davon, ob sie griechisch sind), müssen die Leute das Papier lesen, um die Buchstaben mit einem assoziieren zu können "Bedeutung"; Das bedeutet, dass Sie eine künstliche Barriere aufbauen, damit die Leute Ihren Code verstehen können, und das ist immer eine schlechte Sache.

Auch wenn Sie in einer Nur-ASCII-Welt leben, sind beide a * b / 2und alpha * beta / 2eine gleichermaßen undurchsichtige Darstellung height * base / 2der Dreiecksflächenformel. Die Unlesbarkeit der Verwendung von Variablen mit einem Buchstaben nimmt mit zunehmender Komplexität der Formel exponentiell zu, und die AllegSkill-Formel ist sicherlich keine triviale Formel.

Die Variable "Einzelbuchstaben" ist nur als einfacher Schleifenzähler zulässig, egal ob es sich um griechische Einzelbuchstaben oder ASCII-Einzelbuchstaben handelt. Keine anderen Variablen sollten nur aus einem einzigen Buchstaben bestehen. Es ist mir egal, ob Sie griechische Buchstaben für Ihre Namen verwenden, aber wenn Sie sie verwenden, stellen Sie sicher, dass ich diese Namen mit einer "Bedeutung" verknüpfen kann, ohne dass Sie irgendwo anders eine beliebige Zeitung lesen müssen.

In der Grundschule würde es mir definitiv nichts ausmachen, mathematische Ausdrücke mit Symbolen wie: +, -, ×, ÷ für Grundrechenarten zu sehen, und √ () wäre eine Quadratwurzelfunktion. Nachdem ich die Grundschule abgeschlossen habe, würde es mir nichts ausmachen, ein glänzendes neues Symbol hinzuzufügen: ∫ für die Integration. Beachten Sie den Trend, das sind alles Operatoren. Operatoren werden viel häufiger als Variablennamen verwendet, aber sie werden seltener für eine völlig andere Bedeutung wiederverwendet (in Fällen, in denen Mathematiker Operatoren wiederverwenden, enthält die neue Bedeutung häufig noch einige grundlegende Eigenschaften der alten Bedeutung; dies ist jedoch nicht der Fall bei der Wiederverwendung von Variablennamen).

Abschließend ist es nicht schlecht, Unicode-Zeichen für Variablennamen zu verwenden. Es ist jedoch immer schlecht, einzelne Buchstaben für Variablennamen zu verwenden, und die Verwendung von Unicode-Namen ist keine Lizenz für die Verwendung einzelner Buchstaben für Variablennamen.


9
Um ehrlich zu sein, machen die Formeln hier keinen Sinn, selbst wenn ich sie error_on_measured_skill_with_99th_percent_confidenceanstelle von verwende sigma.
badp

4
@badp: Lange Namen! = Gute Namen. Es gibt jedoch Situationen, in denen es Ihnen unmöglich ist, einen guten Namen zu wählen (z. B. wenn Sie nur die Formel verstehen, aber nicht vollständig verstehen, was die einzelnen Teile der Formel tun (was ein völlig anderes Verständnisniveau erfordert)). In diesem Fall besteht die zweitbeste Alternative darin, Ihren Hintern mit einigen Kommentaren zu verschleiern (besser, als sie an ein externes Papier zu senden). Fügen Sie ein Datenwörterbuch hinzu, in dem erklärt wird, worauf sich die Variablennamen beziehen, z. B. // σw = skill level measurement errorusw.
Lie Ryan

1
@badp: Um ehrlich zu sein, mit genau dieser Information, dass Sigma sich auf einen Fudge-Faktor bezieht (sozusagen), verstehe ich die Formel ein wenig besser als das, was Sigma mir auffällt. Wenn die Formel anfangs schwer zu verstehen ist, möchten Sie sie nicht noch undurchsichtiger machen.
Lie Ryan

2
Ja. Diese. Leider habe ich es beim Schreiben meiner Antwort übersehen.
Konrad Rudolph

3
Nun, jeder, der mit Statistik zu tun hat, weiß, dass σ "Standardabweichung" bedeutet. Es ist ein sehr bekanntes Standardsymbol in diesem Bereich.
TRiG

14

Verstehst du den Code? Müssen alle anderen, die es lesen müssen? Wenn ja, gibt es kein Problem.

Persönlich würde ich mich freuen, wenn ich die Rückseite des Nur-ASCII-Quellcodes sehen könnte.


Getan. (Ich nehme an, Sie haben in der letzten Zeile nach der Nur-ASCII-Version des Codes gefragt?) [] (
Http

4
@badp: Nein, ich habe darum gebeten, den Tod des Nur-ASCII-Codes zu sehen.

bis Sie sehen, was mit Unicode-Quelldateien passiert, wenn Sie auf einem Windows 1252-System

1
@ Thorbjørn: Wenn sie die Stückliste enthalten, dann wird hoffentlich nichts passieren.

9

Ja, du bist verrückt. Ich würde persönlich auf die Papier- und Formelnummer in einem Kommentar verweisen und alles direkt in ASCII schreiben. Dann könnte jeder Interessierte den Code und die Formel in Beziehung setzen.


5
Es war schwierig für mich, sicherzustellen, dass der Code und die Formel an erster Stelle übereinstimmen ...
badp

10
@Paul: Glücklicherweise ist Unicode> 10 Jahre alt, so dass der Einwand geklärt wurde. Und obwohl es keinen eindeutigen Gewinner zwischen den verschiedenen UTFs gibt, ist dies kein Problem: Es sollte keinen geben. Für Software ist es trivial, sie auseinander zu halten.
Konrad Rudolph

1
@Konrad: Ich meine 10 Jahre ab jetzt . Eine ganze Reihe von Programmen unterstützen Unicode immer noch nicht. Außerdem bin ich mit Ihrer Behauptung nicht einverstanden. Es ist nicht trivial, eine generische Reverse-Routine zu schreiben, die alle 3 utfs behandelt. Es muss einen klaren Sieger geben. Es hat keinen Sinn, 3 verschiedene UTFs zu unterstützen (lassen Sie uns die anderen noch vorhandenen Codepages nicht berücksichtigen).
Paul Nathan

3
@Paul: Wie oft müssen Sie eine "generische Reverse-Routine" schreiben? Die drei UTFs dienen unterschiedlichen Zwecken, und ich glaube nicht, dass Sie jemals einen Konsolidierungswunsch haben werden.
Dean Harding

7
@Paul: Schrauben Sie diese Programme. Es gibt genügend gute Editoren, die mit Unicode umgehen können. Wenn ein Redakteur immer noch nicht dabei ist, lassen Sie die wirtschaftliche Auswahl sich darum kümmern. Und wie Dean sagte, dienen die UTFs unterschiedlichen Zwecken. Es ist gut , dass sie existieren. Und ich sehe den Punkt nicht in Ihren mehrfachen umgekehrten Routinen. Sie müssen es nur einmal schreiben (Normalisierungsformulare werden derzeit ignoriert): für Codepunkte, nicht für einzelne UTFs.
Konrad Rudolph

5

Ich würde sagen, dass die Verwendung von Unicode-Variablennamen aus zwei Gründen eine schlechte Idee ist:

  1. Sie sind eine PITA zum Tippen.

  2. Sie sehen oft fast so aus wie englische Buchstaben. Aus dem gleichen Grund hasse ich es, griechische Buchstaben in mathematischer Notation zu sehen. Versuchen Sie, rho von p zu unterscheiden. Es ist nicht einfach.


6
Hängt davon ab, was Sie für die Eingabe verwenden.
Endolith

4

In diesem einen Fall würde ich sagen, dass es sich um eine komplexe mathematische Formel handelt.

Ich kann sagen, dass ich in 20 Jahren noch nie etwas so Komplexes codieren musste, und griechische Buchstaben halten es nahe an der ursprünglichen Mathematik. Wenn Sie es nicht verstehen können, sollten Sie es nicht warten.

Wenn ich sage, dass ich, wenn ich jemals µ und σ in einem Moor-Standardcode pflegen muss, den Sie mir hinterlassen haben, dann werde ich herausfinden, wo Sie leben ...


3
  • Pro: es sieht gut aus
  • Con: Die Unicode-Zeichen und damit die gesamte Bedeutung können in der Toolkette verloren gehen (Editor, Code-Formatierer, Versionskontrolle, älterer Compiler)

Wie groß ist das Risiko für Sie? Überwiegt der Gewinn das Risiko?


2
Werkzeugkette? Welche Werkzeugkette?
badp

2
Editor, Code-Formatierer, Versionskontrolle, älterer Compiler. Jedes Werkzeug und jede Person, die Ihre Datei berührt. Ich habe schlechte Erfahrungen mit Tools gemacht, die mit Unicode-Dateien, YMMV, durcheinander gekommen sind.
LennyProgrammers

2

Irgendwann in nicht allzu ferner Zukunft werden wir alle Texteditoren / IDEs / Webbrowser verwenden, die das Schreiben von Bearbeitungstext einschließlich klassischer griechischer Zeichen usw. vereinfachen. (Oder vielleicht haben wir alle gelernt, dieses "versteckte" zu verwenden "Funktionalität in den Tools, die wir derzeit verwenden ...)

Bis dahin sind jedoch Nicht-ASCII-Zeichen im Programmquellcode für viele Programmierer schwierig zu handhaben und daher eine schlechte Idee, wenn Sie Anwendungen schreiben, die möglicherweise von einer anderen Person gewartet werden müssen.

(Im Übrigen ist der Grund, warum Sie in Python-Bezeichnern griechische Zeichen, aber keine Quadratwurzelzeichen verwenden können, einfach. Die griechischen Zeichen werden als Unicode-Buchstaben klassifiziert, aber das Quadratwurzelzeichen ist kein Buchstabe. Siehe http://www.python.org / dev / peps / pep-3131 / )


Ich halte es für eine großartige Idee, einen IME zu erstellen, der Zeichen für Benutzer übersetzt, die sie nicht direkt eingeben können.
AndrejaKo

Ja, mehr oder weniger, wenn wir zu DVORAK gewechselt sind. :(
badp

1
@AndrejaKo Linux verfügt über einen IME, der LaTeX-Befehle akzeptiert - das heißt, Sie geben sie ein \muund sie werden installiert µ.
badp

@badp Vielen Dank! Ich werde das nächste Mal versuchen, wenn ich boote!
AndrejaKo

Emacs unterstützt eine Reihe nützlicher Eingabemethoden, die die Eingabe von Unicode-Symbolen vereinfachen. (Einschließlich eines TeX, den ich verwende.) Emacs ist kaum futuristisch. (Es ist natürlich großartig.)
Tikhon Jelvis

2

Sie haben nicht angegeben, welche Sprache / welchen Compiler Sie verwenden, aber normalerweise müssen Variablennamen mit einem alphabetischen Zeichen oder Unterstrich beginnen und nur alphanumerische Zeichen und Unterstriche enthalten. Ein Unicode √ würde nicht als alphanumerisch angesehen, da es sich um ein mathematisches Symbol anstelle eines Buchstabens handelt. Jedoch könnte σ sein (da es sich um das griechische Alphabet handelt) und á würde wahrscheinlich als alphanumerisch angesehen.


1

Ich habe die gleiche Art von Frage auf StackOverflow gestellt

Ich denke definitiv, dass es sich lohnt, Unicode in schweren mathematischen Problemen zu verwenden, da es möglich ist, die Formel direkt zu lesen, was mit einfachem ASCII unmöglich ist.

Stellen Sie sich eine Debugging-Sitzung vor: Natürlich können Sie die Formel, die der Code berechnen soll, immer von Hand schreiben, um zu prüfen, ob sie korrekt ist. In neunzig Prozent der Fälle werden Sie sich nicht darum kümmern, und der Fehler kann für eine lange, lange Zeit verborgen bleiben. Und niemand ist jemals bereit, sich diese abstruse 7-zeilige, einfache ASCII-Formel anzuschauen. Natürlich ist die Verwendung von Unicode nicht so gut wie eine von Texten gerenderte Formel, aber es ist viel besser.

Die Alternative, lange beschreibende Namen zu verwenden, ist nicht sinnvoll, da in der Mathematik die Formel noch komplizierter aussieht, wenn der Bezeichner nicht kurz ist. und "minus" durch "-"?).

Persönlich würde ich auch einige tiefgestellte und hochgestellte Zeichen verwenden (ich kopiere sie einfach von dieser Seite ). Zum Beispiel: (hatte Python erlaubt √ als Bezeichner)

√ = math.sqrt #function alias
c² = c**2
σʷ² = σʷ**2
γ² = γ**2
σ′ʷ = √(σʷ² * (1 - (σʷ²/c²)*Wʷⁱⁿ(t, e)) + γ²)

Wo ich hochgestellte Zeichen verwendet habe, weil es in Unicode kein tiefgestelltes Äquivalent gibt. (Leider ist der Zeichensatz für den Unicode-Index sehr begrenzt. Ich hoffe, dass das Abonnieren von Unicode eines Tages als diakritisch betrachtet wird, dh als Kombination aus einem Zeichen für den Index und einem anderen Zeichen für den abonnierten Buchstaben.)

Eine letzte Sache, ich denke, dieses Gespräch über die Verwendung von Nicht-ASCII-Zeichen ist in erster Linie voreingenommen, weil viele Programmierer sich nie mit "formelintensiven mathematischen Notationen" beschäftigen. Sie sind der Meinung, dass diese Frage nicht so wichtig ist, weil sie nie einen wesentlichen Teil des Codes erlebt haben, für den Nicht-ASCII-Bezeichner erforderlich wären. Wenn Sie einer von ihnen sind (und ich war bis vor kurzem), bedenken Sie Folgendes: Angenommen, der Buchstabe "a" ist nicht Teil von ASCII. Dann haben Sie eine ziemlich gute Vorstellung von dem Problem, dass beim Berechnen nicht-trivialer mathematischer Formeln keine griechischen Buchstaben, Indizes oder hochgestellten Indizes vorkommen.


0

Ist dieser Code nur für Ihr persönliches Projekt? Wenn ja, verrückt werden, verwenden Sie, was Sie wollen.

Ist dieser Code für andere bestimmt? dh und Open-Source-App irgendeiner Art? Wenn ja, fragen Sie wahrscheinlich nur nach Problemen, weil verschiedene Programmierer verschiedene Editoren verwenden, und Sie können nicht sicher sein, dass alle Editoren Unicode korrekt unterstützen. Außerdem wird der Code nicht in allen Befehls-Shells korrekt angezeigt, wenn die Quellcodedatei vom Typ / cat'd ist, und es kann zu Problemen kommen, wenn Sie ihn in HTML anzeigen müssen.


0

persönlich bin ich motiviert, programmiersprachen in diesem zusammenhang als werkzeug für mathematiker zu betrachten, da ich eigentlich keine mathematik verwende, die in meinem leben so aussieht. : D Und warum nicht ɛ oder σ oder was auch immer - in diesem Zusammenhang ist es tatsächlich besser lesbar.

(Obwohl ich sagen muss, dass ich es vorziehen würde, hochgestellte Zahlen als direkte Methodenaufrufe und nicht als Variablennamen zu unterstützen. ZB 2² = 2 ** 2 = 4 usw.)


-2

Was zum Teufel ist σ, was ist W, was ist ε, cund was ist γ?
Sie müssen Ihre Variablen so benennen, dass der Zweck erklärt wird.
Ich persönlich würde jeden verprügeln, der die Unicode- oder ASCII-Version für mich behalten möchte, obwohl die ASCII-Version besser ist.

Was böse ist, ist das Aufrufen von Variablen σoder soder sigmaoder valueoder var1, weil dies keine Informationen vermittelt.

Angenommen, Sie schreiben Ihren Code in Englisch (ich glaube, Sie sollten es von jedem Ort aus tun), dann sollte ASCII ausreichen, um Ihren Variablen aussagekräftige Namen zu geben, sodass Unicode eigentlich nicht erforderlich ist.


2
Was wäre, wenn er das Papier kopieren / einfügen und es dann als Kommentar in seinen Quellcode einfügen würde, obwohl es nur aus einem Zeichen besteht?
Brian

19
Viele dieser Variablennamen haben eine starke Bedeutung für diejenigen, die mit der Problemdomäne vertraut sind. Für jemanden, der mit der Domäne vertraut ist, sind englische Namen möglicherweise weniger lesbar als Namen wie Sigma oder Rho.
dsimcha

3
Ich fürchte, so etwas rank_error_with_99_pct_confidenceist ein bisschen zu lang und würde die Formeln eigentlich nicht leichter verständlich machen. AllegSkill / TrueSkill nennen diese Sigma, daher halte ich es für absolut akzeptabel, den domänenspezifischen Namen beizubehalten, den sie haben.
badp

3
@badp: gute Namen sind kurz und beschreibend; es muss aber nicht vollständig beschreibend sein. Für Ihr Sigma ist es perfekt rank_error, die zusätzlichen Details, die zu 99 Prozent in der Dokumentation / im Kommentar stecken, zu verwenden und zu vertrauen.
Lie Ryan

1
@dsimcha: Ich denke, diejenigen, die mit einer bestimmten Domain vertraut sind, sind bedeutend seltener als diejenigen, die noch nie davon gehört haben. Und ich denke, diejenigen, die mit der Domäne vertraut sind, werden mit einfachen englischen Namen umgehen können, während diejenigen, die nicht mit ihr vertraut sind, überhaupt nicht verstehen können, was passiert, wenn alles durch griechische Ein-Buchstaben-Variablen verschleiert wird.
back2dos

-2

Für Variablennamen mit bekannten mathematischen Ursprüngen ist dies absolut akzeptabel - sogar bevorzugt. Wenn Sie jedoch jemals damit rechnen, den Code zu verteilen, sollten Sie diese Werte in ein Modul, eine Klasse usw. einfügen, damit die IDE die seltsamen Zeichen automatisch vervollständigen kann.

Verwenden von √ oder ² in einem Bezeichner - nicht so oft.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.