Namenskonventionen: "Status" versus "Status" [geschlossen]

175

Kurze Frage: Ich würde gerne Ihre Gedanken darüber hören, wann "State" oder "Status" verwendet werden soll, wenn Sie beide Felder wie "Foo.currentState" vs "Foo.status" und Typen wie "enum FooState" vs "enum" benennen FooStatus ". Gibt es da draußen eine Konvention? Sollten wir nur einen verwenden? Wenn ja, welches und wenn nicht, wie sollen wir wählen?

Sophistifunk
quelle
14
Heh. Neulich bei der Arbeit bin ich auf eine Struktur gestoßen, die ein Mitglied namens "state" und ein anderes Mitglied namens "status" hatte, und das waren verschiedene Dinge. Ich begann darüber nachzudenken, was die Wörter bedeuteten und ob ich sie ändern sollte, aber der Code war alt und mürrisch und funktionierte, also ließ ich diesen schlafenden Hund liegen. Oh ... das hätte wahrscheinlich eher ein "Kommentar" als eine "Antwort" sein sollen, oder? Kommentar, Antwort, Status, Status ... was auch immer.
smcameron
9
Und das ist natürlich geschlossen. Gut, alter SO.
jn1kk
2
@jsn ist es nicht nur geschlossen (was nicht in diesen Tagen?), aber es ist noch ein langer Schuss die beliebteste , was ich hier beigetragen haben :)
Sophistifunk
8
Dies ist eine legitime Programmierfrage. martinfowler.com/bliki/TwoHardThings.html
2
Status ist eine einfache Bezeichnung wie "gesund", "degradiert", "nicht verfügbar" usw. Der Status enthält alle wichtigen Details. zB CPU-Auslastung und Lastdurchschnitte, Speicherauslastung, JVM-Metriken, Festplattenauslastung usw.

Antworten:

107

Das hängt vom Kontext ab

Der Status bezieht sich im Allgemeinen auf den gesamten Status einer Entität - alle ihre Werte und Beziehungen zu einem bestimmten Zeitpunkt (normalerweise aktuell).

Der Status ist eher ein Zeitpunkt, an dem sich etwas in einem Prozess oder Workflow befindet - ist es schmutzig (erfordert daher das Speichern), ist es vollständig, steht eine Eingabe aus usw.

Ich hoffe das hilft dir bei deiner Entscheidung.

Luke Schafer
quelle
211

IMO:

status == wie geht es dir [gut schlecht]

state == was machst du [ruhen / arbeiten]

spemble
quelle
17
Wo warst du 2009? Diese Antwort ist im Fachjargon (CPU-Status, Thread-Status, Statusmaschine; Rückgabestatus, Status des RAID-Volumes usw.) und sogar in vielen anderen Bereichen (Anwendungsstatus, Kontostatus usw.) am sinnvollsten. Das einzige, was ich mir als inkonsistent vorstellen kann, sind Dinge wie "Sachverhalt" oder "Sachverhalt", die eher Ihrem "Status" entsprechen (gute / schlechte Vorstellung von Dingen, die vor sich gehen, und nicht von Dingen, die vor sich gehen auf sich selbst gehen).
Peter
4
Staat impliziert auch, dass es mehr Informationen enthält als nur "Ausruhen / Arbeiten" - aber alle Details über die Arbeit (oder Ruhe), die es tut.
BrainSlugs83
3
"Ich baue ein Baumhaus im Hinterhof meines Bruders" wäre ein detaillierteres Beispiel für den Zustand , wie Sie vorschlagen, @ BrainSlugs83. In diesem Beispiel ist mein Status möglicherweise müde / verschwitzt / voller Energie / glücklich.
Spemble
4
Ich liebe dieses Beispiel. Sauber und prägnant. Für meinen praktischen Gebrauch könnte ich es auf ein Axiom verallgemeinern, indem ich sage, dass Statees den "angegebenen Knoten" in einem Diagramm von Zustandsmaschinen- (oder Workflow-) Zustandsknoten widerspiegeln sollte, wobei die Beschreibung leicht ein verbales Adjektiv sein kann (oft endet mit " -ing "), während Statuses sich um eine einfache Eigenschaft des Objekts handelt, ein einfaches Adjektiv, das von einem Trigger oder als beobachteter Wert für eine Entscheidung zur Änderung (oder Beibehaltung) eines Zustands verwendet werden kann. Ich überdenke es wahrscheinlich. Ich mache das ..
Alan McBee - MSFT
6
Ich stimme zu: STATUS ist das Ergebnis oder der Fortschritt einer Änderung von STATE.
Neil
16

Normalerweise verwende ich Status, um den aktuellen Zustand eines Objekts oder des gesamten Systems zu bezeichnen. Ich benutze den Status, um das Ergebnis einer Aktion darzustellen. Beispielsweise kann der Status eines Objekts gespeichert / nicht gespeichert, gültig / ungültig sein. Der Status (Ergebnis) einer Methode ist erfolgreich / erfolglos / fehlerhaft. Ich denke, dies stimmt ziemlich gut mit der Definition des Status als " Zustand oder Bedingung in Bezug auf die Umstände " überein , wobei die Umstände in diesem Fall die Anwendung einer Handlung / Methode sind.

Tvanfosson
quelle
8

Ein weiterer (völlig pragmatischer) Grund, den Staat dem Status vorzuziehen, ist, dass der Plural einfach ist:

  • Zustand -> Zustände
  • Status -> Status

Und glauben Sie mir, Sie werden früher oder später eine Liste oder ein Array oder einen beliebigen Status in Ihrem Code haben und die Variable benennen müssen.

robinst
quelle
3
Ich frage mich nur, sollte Status 'Plural nicht stati sein?
BiAiB
Wiktionary sagt Status: en.wiktionary.org/wiki/status#Noun . Andere Sprachen haben jedoch andere Pluralformen.
Robinst
9
Der lateinische Plural ist "statūs" mit einem langen u, nicht stati.
Paŭlo Ebermann
6

Ich denke, viele Leute verwenden "Status", um den Zustand eines Objekts darzustellen, wenn sich "State" aus keinem anderen Grund auf eine politische Spaltung der Vereinigten Staaten bezieht.

Dave Markle
quelle
11
Das ist weder der Grund, den ich jemals benutzt habe, noch jemand, mit dem ich je gearbeitet oder Text gelesen habe ...
Luke Schafer
4
Na und? Das ist ein triftiger Grund. Es ist eine Namenskonvention.
Dave Markle
4
Ja. Auch in Australien verwenden wir den Begriff Staat, um die ehemaligen Einzelkolonien zu beschreiben, die 1901 im Commonwealth vereinigt wurden. Daher verwende ich normalerweise nur .status, da .state häufig in Datenstrukturen mit einer Adresse verwendet wird.
Matthew Schinckel
Also address.state = Tasmanien; macht Sinn, aber es ist nicht zu erwarten, dass device.state die Geografie einbezieht.
Spemble
3

Ich denke, Sie könnten der Gleichung eine andere Perspektive hinzufügen, nämlich "Absender-Anforderer".

Aus Sicht des Absenders würde ich meinen Zustand jedem mitteilen, der bereit ist, zuzuhören. Aus Sicht des Antragstellers würde ich nach dem Status einer Person fragen.

Das Obige könnte auch unter dem Gesichtspunkt der Unsicherheit interpretiert werden: - Definiert = Zustand - Undefiniert = Status Wie ist Ihr Status? Ich bin in einem entspannten Zustand.

Ich bin mir ziemlich sicher, dass dies nur eine Interpretation ist, die möglicherweise nicht auf Ihre spezielle Situation zutrifft.

Michel Verkaik
quelle
1

Eine schnelle Wörterbuchprüfung zeigt, dass Status ein Synonym für Status ist, aber eine zusätzliche Interpretation einer Position relativ zu der anderer hat .

Ich würde also state für eine Reihe von Zuständen verwenden, die keine implizite Reihenfolge oder Position relativ zueinander haben, und status für diejenigen, die dies tun (möglicherweise off-standby-on?). Aber es ist eine feine Unterscheidung.

Brian Agnew
quelle
1

Viele der Unternehmen, mit denen ich zu tun habe (Konten, Kunden), haben möglicherweise einen Status (TX, VA usw.) und einen Status (Aktiv, Geschlossen usw.).

Der Punkt, dass der Begriff irreführend ist, ist also möglich. Wir haben eine standardisierte Datenbankbenennungskonvention (nicht meine persönliche Wahl), in der ein Staat benannt wird ST_CDund ein Status wäre ACCT_STAT_CD.

Bei einer Aufzählung in einem OO-Milieux ist dieses Problem nicht so wichtig, da der Compiler bei strenger Typensicherheit sicherstellt, dass niemand versucht, dies zu tun:

theCustomer.State = Customer.Status.Active;

Wenn Sie sich in einer dynamischen Umgebung befinden, wäre ich besorgter!

Wenn Sie es mit einer Domäne zu tun haben, in der Zustandsautomaten oder andere Zustandsinformationen vorherrschen und diese Terminologie vorherrscht, dann würde ich denken, dass Zustand vollkommen in Ordnung ist.

Cade Roux
quelle
Die Adresse gehört zur Adresse des Kunden, nicht zum Kunden an sich, z. B. theCustomer.MailingAddress.State = Iowa;
Spemble
@spemble Möglicherweise und möglicherweise nicht. Es kann auch ein Geburts- oder Wohnsitzstaat sein, wenn es an eine Person ohne Adresse angehängt ist, und natürlich auch an viele andere Stellen wie Adressen, Lizenzen, Genehmigungen usw. Ich bin mir auf jeden Fall nicht sicher Es ist relevant für die Frage, ob es Unklarheiten gibt, einen allgemeinen Problemdomänenbegriff wie State für eine implementierungsspezifische Zustandsmaschine / Flagge / Status zu verwenden. Und dann, ob Staat oder Status unterschiedliche Bedeutungen haben oder nicht.
Cade Roux
0

Wir hatten vor einiger Zeit genau diese Debatte über mein aktuelles Projekt. Ich habe wirklich keine Präferenz, aber Konsistenz ist eine wichtige Überlegung.

Die erste (es gibt mehrere) Definition von "Status" in meinem Sharp PW-E550 (ein fantastisches Wörterbuch, könnte ich hinzufügen) ist "die besondere Bedingung, in der sich jemand oder etwas zu einer bestimmten Zeit befindet". Die erste Definition von "Status" ist "die relative soziale, berufliche oder sonstige Stellung von jemandem oder etwas". Selbst die zweite (und letzte) Definition von "Status" ist in diesem Zusammenhang "Staat" unterlegen: "die Position der Angelegenheiten zu einem bestimmten Zeitpunkt, insbesondere in politischen oder kommerziellen Kontexten".

Wenn wir also möchten, dass es für jemanden, der mein Wörterbuch verwendet (es verwendet das New Oxford American Dictionary, 2001), so einfach wie möglich ist, wäre "state" die beste Wahl.

Darüber hinaus gibt es ein Entwurfsmuster, das im Buch der Viererbande beschrieben ist und als Zustandsmuster bezeichnet wird und den Begriff fest im Computerlexikon verankert.

Aus diesen Gründen schlage ich "Zustand" vor.

PS Bist du DDM? Sind Sie immer noch bitter über "Staat" gegen "Status"? !!!!!!! LMAO!

les2
quelle
-1

Nun, sie bedeuten dasselbe. Ich denke nicht, dass es notwendig ist, eine große Präferenz gegenüber der anderen zu verbreiten, aber ich würde im Allgemeinen mit "Status" gehen, weil ich Dinge mag, die lateinisch und klassisch klingen. Ich meine, in meiner Welt ist der Plural des Schemas Schemata, also gibt es bei mir so gut wie keinen anderen Weg.

Chaos
quelle
Sie bedeuten nicht dasselbe.
BrainSlugs83
Der Kontext für diese Frage ist Software, weshalb die Frage gültig ist. Computersysteme müssen so gut wie immer den Status / Status verschiedener Teile des Systems ermitteln und melden, und die beschreibende Benennung von Dingen wird für Personen, die die Software debuggen oder verbessern, sehr wichtig.
Spemble
-1

Sophistifunk, ich bin sicher, Sie werden Argumente für Status und Status erhalten. Das Wichtigste ist, dass Sie eine auswählen und nur eine verwenden. Ich würde vorschlagen, dies mit Ihrem Team zu besprechen und zu sehen, worüber sich alle einig sind.

Mein Vorschlag lautet jedoch wie folgt.

Angenommen, Sie verwenden eine objektorientierte Programmiersprache, wird der "Status" eines Objekts durch das Objekt selbst dargestellt. SomeObject.state ist imo irreführend. Ich bin mir nicht sicher, was "Status" in Ihrem Beispiel darstellt, aber meine natürliche Intuition ist es, dies der Angabe vorzuziehen.

Hobodave
quelle
1
Es ist absurd, einen auszuwählen und nur bei einem zu bleiben. Die beiden haben unterschiedliche Bedeutungen und Implikationen. Betrachten Sie zum Beispiel "GameState" gegenüber "GameStatus" - die beiden haben sehr unterschiedliche Auswirkungen und sind nicht austauschbar.
BrainSlugs83
-2

Überhaupt nicht dasselbe. Gestoppt und gestartet sind Zustände. Stoppen und Starten sind Status.

Wenn Sie sie gleich machen, wie beschreiben Sie das Fahrzeug als gestoppt, startet aber gerade? Oder ein Antrag, der derzeit eingereicht wurde, aber noch nicht in das Genehmigungsverfahren eingetreten ist oder genehmigt wird, aber derzeit mit der Fehlerbedingung "Warten auf Unterschrift" zurückgestellt wird?

Andy Robinson
quelle
1
OP fragte nach dem einen oder anderen; nicht beide. Man könnte argumentieren, dass dies Startingin der Tat Statevöllig anders ist Stopped. Dies hängt von der Semantik Ihres Systems ab . Überprüfen Sie beispielsweise Windows-Dienste.
Andrew Barber