Ich nehme an, diese Frage wird sofort als subjektiv gekennzeichnet, aber was ist Ihrer Meinung nach besser:
double volume(double pressure, double n_moles, double temperature) {
return n_moles * BOLTZMANN_CONSTANT * temperature / pressure;
}
oder
double volume(double P, double n, double T) {
return n*R*T/P;
}
Mit anderen Worten, sollten Funktionen, die eine Gleichung implementieren, der Notation dieser Gleichung folgen, oder sollten sie ausführlichere Namen verwenden?
math
coding-style
readability
Lindelof
quelle
quelle
Antworten:
Kommt darauf an, wer es liest. Wenn Sie garantieren können, dass der nächste Programmierer, der Ihren Code liest, für alle Ewigkeit auch mit der Thermodynamik vertraut ist, dann entscheiden Sie sich für die abgeschnittene Version.
Mein persönlicher Stil ist es, solche Variablen zu verwenden (deren Abkürzungen im Feld allgemein bekannt sind), ihre Beschreibung jedoch in Kommentare aufzunehmen.
quelle
GAS_CONSTANT
ist nicht ein Standard - Variablennamen, jedes Lehrbuch Ich weiß von AnwendungenR
für diese) und erklären , sie kurz in den Kommentaren ist das Beste , was getan werden kann.Wenn Sie es einfach rauswerfen, haben Sie eine andere Möglichkeit:
Dies ähnelt in etwa dem, was F # mit Maßeinheiten macht, und hat den Vorteil, dass Probleme wie das versehentliche Ersetzen eines Drucks durch eine Temperatur vermieden werden. Es ist schwierig zu überlegen, welche Argumente wohin gehen sollen, wenn die Signatur so ist (doppelt, doppelt, doppelt).
quelle
typedef
Ich bevorzuge das:
Mit anderen Worten, erklären Sie die Bedeutung des Codes im Kommentar auf Englisch (und Mathematik; es sind Kommentare, Sie können ihn so weit wie nötig erweitern), aber verwenden Sie beschreibende Variablennamen, damit jeder, der den einzigen Code liest, ihn noch verstehen kann es leicht - vor allem bei größeren Funktionen. Ein weiterer Grund, warum ich echte Wörter als Variablennamen verwenden würde, ist, dass die Schnittstelle viel klarer ist, wenn Sie die Funktionsdeklaration in eine Header-Datei kopieren müssen.
quelle
IMHO ist es immer besser, die etablierte Notation der Problemdomäne zu verwenden, in der Sie arbeiten, wenn die Funktion sehr domänenspezifisch ist. Jemand, der die Problemdomäne nicht versteht, hat ohnehin keine Chance, Ihren Code erfolgreich zu verwalten, und für jemanden, der mit der Domäne vertraut ist, sind die langen Namen nur Rauschen und mehr Eingabe für Sie.
OTHO, ich werde sagen, dass ich wünschte, die konventionelle mathematische Notation wäre manchmal ausführlicher und beschreibender, aber unabhängig davon denke ich, dass mathematischer Code sich an mathematische Konventionen halten sollte.
Bearbeiten: Diese Antwort gilt nur, wenn beim mathematischen Schreiben der Formel eine sehr starke Konvention zur Notation besteht. Wenn es keine gibt und Sie erklären müssen, was die Variablen in einem Kommentar darstellen, selbst wenn der Leser mit der Domäne vertraut ist, ist es am besten, sich auf die Seite einer aussagekräftigeren Konvention zu stellen.
quelle
Reine Meinung, aber immer die Wörter über den Einbuchstaben verwenden. Wenn Sie Wörter verwenden, wird jeder verstehen; Wenn Sie Symbole verwenden, werden garantiert nur Fachexperten folgen. Selbst dann verwenden manche Menschen unterschiedliche Symbole für die gleichen physikalischen Größen. Sie haben nichts zu verlieren, wenn Sie die längeren Namen verwenden.
quelle
Ihr Anliegen sollte Klarheit und dann Korrektheit sein (falscher, aber klarer Code lässt sich leicht korrigieren). Daher sollte Ihre Funktion so geschrieben werden, dass sie von einem generischen Codierer so weit wie möglich gewartet werden kann. Die Funktionsheaderkommentare sollten die Formel und ihre Verwendung erläutern und In / Out-Parameter beschreiben. Danach sollte es nicht allzu wichtig sein, wie der Funktionskörper angeordnet ist, solange er mit den Header-Kommentaren übereinstimmt.
(Ich weiß, dass dies keine Diskussion ist, aber - meine persönliche Präferenz wäre es, den Variablen explizite Namen zu geben, obwohl in diesem Fall ein Einzeiler ausreichen könnte, da es sich um eine 'reine' Funktion handelt; ein Aufruf mit denselben Parametern würde dasselbe ergeben Ergebnis immer, damit es keine zustandsbezogene Komplexität gibt, die einer Erklärung bedarf)
quelle
Hängt davon ab, wie "weit entfernt" der Code von der Geschäftsschicht entfernt ist ... Je weiter der Code im Stapel zurückliegt, desto gezielter ist er auf die abstrakte mathematische Funktion, die implementiert wird, desto mehr würde ich versuchen, die allgemein akzeptierte zu emulieren Konventionen für matehmatische Notation und Benennung. Je näher am Frontend oder an der Business-Schicht, desto mehr würde ich mich an die im Problembereich festgelegten Konventionen halten.
quelle
Ich sehe das gerne so - Mathematiker haben es mit kurzen Variablen falsch verstanden und Physiker folgten diesem Beispiel. Warum ihren Fehler wiederholen? Wir wissen jetzt, dass längere Namen aussagekräftiger sind und weniger Verwirrung stiften. Bleiben Sie also bei der Verbesserung. In einem leichteren Ton versuche ich manchmal, längere Variablen in meine Mathematik einzuschleusen, worüber alle entsetzt sind.
quelle
Das richtige Format für eine Programmiergleichung ist eines, das Sie immer noch verstehen, nachdem Sie es sechs Monate lang nicht gesehen haben.
Wenn Sie zurückkommen zu:
Und Sie erkennen, was los ist, dann ist es wahrscheinlich in Ordnung. Normalerweise erinnere ich mich bei fortgeschrittenen Formeln nicht daran, was jedes Teil war, es sei denn, ich verwende es aktiv. Für mich:
ist ein viel besseres Gleichungsformat, insbesondere weil ich jeden Teil leicht verstehen kann, auch wenn ich nicht unbedingt weiß, warum die Gleichung so geschrieben ist, wie sie ist.
quelle
E=m*(c^2)
ich werde es in sechs Monaten verstehen.Wirf die Münze.
Verbringen Sie manchmal auch mehr Zeit damit, über das Benennen einer Variablen nachzudenken, als Sie für die Codierung selbst aufwenden?
quelle