Convenzioni di denominazione: "Stato" contro "Stato" [chiuso]


175

Domanda veloce: mi piacerebbe sentire le tue opinioni su quando usare "Stato" rispetto a "Stato" quando si nominano entrambi i campi come "Foo.currentState" vs "Foo.status" e tipi, come "enum FooState" vs "enum FooStatus". C'è una convenzione discussa là fuori? Dovremmo usarne solo uno? In tal caso quale, e se no, come dovremmo scegliere?


14
Eh. L'altro giorno al lavoro mi sono imbattuto in una struttura che aveva un membro chiamato "stato" e un altro membro chiamato "stato", ed erano cose diverse. Ho iniziato a pensare a cosa significassero le parole e a se cambiarlo, ma il codice era vecchio, ruvido e funzionante, quindi ho lasciato mentire quel cane addormentato. Oh .. questo probabilmente avrebbe dovuto essere un "commento" piuttosto che una "risposta, eh? Commento, risposta, stato, stato ... qualunque cosa.
smcameron,

9
E ovviamente questo è chiuso. Buon vecchio.
jn1kk,

2
@jsn non è solo chiuso (ciò che non è in questi giorni?), ma è ancora di gran lunga la cosa più importante che ho contribuito qui :)
Sophistifunk

8
Questa è una domanda di programmazione legittima. martinfowler.com/bliki/TwoHardThings.html

2
Lo stato è un'etichetta semplice, come "salutare", "degradato", "non disponibile", ecc. Lo stato include tutti i dettagli cruenti; ad esempio, utilizzo della CPU e medie del carico, utilizzo della memoria, metriche JVM, utilizzo del disco, ecc.

Risposte:


107

Dipende dal contesto

Lo stato si riferisce generalmente all'intero stato di un'entità - tutti i suoi valori e relazioni in un determinato momento (di solito, corrente)

Lo stato è più di un punto temporale, per esempio, in cui qualcosa si trova in un processo o flusso di lavoro - è sporco (quindi richiede un salvataggio), è completo, è in attesa di input, ecc.

Spero che ti aiuti nella tua decisione.


211

IMO:

status == come stai? [buono cattivo]

state == cosa stai facendo? [Riposo / lavoro]


17
Dov'eri nel 2009? Questa risposta ha più senso nel gergo tecnico (stato della cpu, stato del thread, macchina dello stato; stato del ritorno, stato del volume del raid, ecc.) E persino gran parte di tutto il resto (stato dell'applicazione, stato dell'account, ecc.). L'unica cosa a cui riesco a pensare che sia incoerente sono cose come "stato delle cose" o "lo stato delle cose" che è più simile al tuo "status" (buona / cattiva idea delle cose che stanno succedendo, piuttosto che delle cose che andare avanti da soli).
Peter

4
Lo stato implica anche che contiene più informazioni del semplice "riposo / lavoro", ma tutti i dettagli sul lavoro (o riposo) che sta svolgendo.
BrainSlugs83

3
"Sto costruendo una casa sull'albero nel cortile di mio fratello" sarebbe un esempio più dettagliato di stato , come suggerisci, @ BrainSlugs83. In questo esempio il mio stato potrebbe essere stanco / sudato / eccitato / felice.
assemblare il

4
Adoro questo esempio. Pulito e conciso. Per il mio uso pratico, potrei generalizzarlo in un assioma dicendo che Statedovrebbe riflettere il "nodo indicato" all'interno di un grafico dei nodi di stato della macchina a stati (o flusso di lavoro), dove la descrizione potrebbe facilmente essere un aggettivo verbale (spesso termina con " -ing "), mentre Statusè una semplice proprietà dell'oggetto, un semplice aggettivo, che potrebbe essere utilizzato da un trigger o come valore osservato per una decisione di cambiare (o mantenere) uno stato. Probabilmente lo sto pensando troppo. Lo faccio ..
Alan McBee - MSFT il

6
Sono d'accordo: STATUS è il risultato o l'avanzamento di una modifica di STATE.
Neil,

16

Tipicamente userò State per indicare la condizione corrente di un oggetto o del sistema nel suo insieme. Uso lo status per rappresentare il risultato di alcune azioni. Ad esempio, lo stato di un oggetto può essere salvato / non salvato, valido / non valido. Lo stato (risultato) di un metodo ha esito positivo / non riuscito / errore. Penso che questo si sposti abbastanza bene con la definizione di stato come " stato o condizione rispetto alle circostanze ", le circostanze in questo caso sono l'applicazione di un'azione / metodo.


8

Un altro motivo (completamente pragmatico) per preferire lo stato rispetto allo stato è che il plurale sia semplice:

  • stato -> stati
  • status -> stati

E credimi, prima o poi avrai un elenco o un array o qualunque degli stati nel tuo codice e dovrai nominare la variabile.


3
mi chiedo, lo stato non dovrebbe essere stato plurale?
BiAiB,

Wikizionario dice status: en.wiktionary.org/wiki/status#Noun . Altre lingue hanno comunque diversi plurali.
Robininst

9
Il plurale latino è "statūs", con una lunga u, non stati.
Paŭlo Ebermann,

6

Penso che molte persone utilizzino "Status" per rappresentare lo stato di un oggetto se per nessun altro motivo se non "State" si riferisce a una divisione politica degli Stati Uniti.


11
non è questo il motivo per cui io abbia mai usato, né chiunque abbia mai lavorato o letto testi da ...
Luke Schafer,

4
E allora? È un motivo valido. È una convenzione di denominazione.
Dave Markle,

4
Sì. Anche in Australia, usiamo il termine Stato per descrivere le ex singole colonie che furono unificate nel Commonwealth nel 1901. Quindi, tendo a usare solo .status, poiché avere .state è spesso usato in strutture di dati che hanno un indirizzo.
Matthew Schinckel,

Quindi address.state = Tasmania; ha senso, ma device.state non dovrebbe prevedere la geografia.
dal

3

Penso che potresti aggiungere un'altra prospettiva all'equazione, vale a dire "mittente-richiedente".

Dal punto di vista dei mittenti, comunicherei il mio stato con chiunque fosse disposto ad ascoltare. Dal punto di vista dei richiedenti, chiederei lo stato di qualcuno.

Quanto sopra potrebbe anche essere interpretato da un punto di vista dell'incertezza:

  • Definito = stato
  • Non definito = stato

Qual è il tuo stato? Sono in uno stato rilassato.

Sono abbastanza sicuro che questa sia solo un'interpretazione, che potrebbe non essere applicabile alla tua situazione particolare.


1

Un rapido controllo del dizionario rivela che lo stato è sinonimo di stato, ma ha un'interpretazione aggiuntiva di una posizione rispetto a quella degli altri .

Quindi userei lo stato per un insieme di stati che non hanno alcun ordine implicito o posizione l'uno rispetto all'altro, e lo stato per quelli che lo fanno (forse off-standby-on?). Ma è una bella distinzione.


1

Molte delle entità con cui ho a che fare (conti, clienti) possono avere uno Stato (TX, VA, ecc.) E uno Stato (Attivo, Chiuso, ecc.)

Quindi il punto sul termine essere fuorviante è possibile. Abbiamo una convenzione standardizzata di denominazione del database (non una mia scelta personale) in cui viene nominato ST_CDuno stato e lo stato sarebbeACCT_STAT_CD .

Con un enum in un milieux OO, questo problema non è così importante, poiché se si dispone di una rigorosa sicurezza del tipo, il compilatore garantirà che nessuno tenti di farlo:

theCustomer.State = Customer.Status.Active;

Se ti trovi in ​​un ambiente dinamico, sarei più preoccupato!

Se hai a che fare con un dominio in cui le macchine statali o altre informazioni statali e quella terminologia sono predominanti, allora penso che State sia perfettamente a posto.


L'indirizzo appartiene all'indirizzo del cliente, non al cliente in sé, ad esempio theCustomer.MailingAddress.State = Iowa;
assemblare il

@spemble Forse, e forse no. Può anche essere uno stato di nascita o uno stato di residenza quando è collegato a una persona assente da un indirizzo e, naturalmente, può essere collegato a molte altre entità come indirizzi, licenze, permessi, ecc. In ogni caso, non sono sicuro è rilevante per la questione se vi sia ambiguità nell'uso di un termine di dominio problematico comune come Stato per una specifica implementazione di una macchina / bandiera / stato dello stato. E poi se lo stato o lo stato hanno o non hanno significati diversi.
Cade Roux,

0

Abbiamo avuto questo esatto dibattito sul mio attuale progetto qualche tempo fa. Non ho davvero preferenze, ma la coerenza è una considerazione importante.

La prima (ci sono diverse) definizioni di "stato" nel mio Sharp PW-E550 (un dizionario fantastico, potrei aggiungere) è "la condizione particolare in cui si trova qualcuno o qualcosa in un momento specifico". La prima definizione di "status" è "la relativa posizione sociale, professionale o di altro tipo di qualcuno o qualcosa". Anche la seconda (e ultima) definizione di "status" è inferiore a "stato" in questo contesto: "la posizione degli affari in un determinato momento, specialmente in contesti politici o commerciali".

Quindi se volessimo che fosse il più semplice possibile per qualcuno che utilizzava il mio dizionario (utilizza il New Oxford American Dictionary, 2001), "stato" sarebbe la scelta migliore.

Inoltre, c'è un modello di progettazione descritto nel libro di Gang of Four chiamato State Pattern, che stabilisce saldamente il termine nel lessico informatico.

Per questi motivi suggerisco "stato".

PS Sei tu DDM? Sei ancora amareggiato per "stato" contro "stato"? !!!!!!! LMAO!


-1

Bene, significano la stessa cosa. Non penso che sia necessario promulgare una grande preferenza l'uno rispetto all'altro, ma generalmente andrei con "status", perché mi piacciono le cose che suonano latinate e classiciste. Voglio dire, nel mio mondo, il plurale di schema è schemato, quindi non c'è praticamente nessun altro modo per farlo, con me.


Non significano la stessa cosa.
BrainSlugs83,

Il contesto di questa domanda è il software, motivo per cui la domanda è valida. I sistemi informatici devono quasi sempre determinare e segnalare lo stato / lo stato di varie parti del sistema e nominare le cose in modo descrittivo diventa molto importante per le persone che eseguono il debug o migliorano il software.
unire il

-1

Sophistifunk, sono sicuro che otterrai argomenti sia per lo stato che per lo stato. La cosa più importante da fare è sceglierne uno e utilizzarne solo uno. Suggerirei di discuterne con il tuo team e vedere cosa concordano tutti.

Detto questo, il mio suggerimento è il seguente.

Supponendo che si stia utilizzando un linguaggio di programmazione orientato agli oggetti, lo "stato" di un oggetto è rappresentato dall'oggetto stesso. SomeObject.state è imo fuorviante. Non sono sicuro di quale "status" rappresenti nel tuo esempio, ma la mia intuizione naturale è preferire che questo affermi.


1
Scegliere uno e attaccare solo con uno è assurdo. I due hanno significati e implicazioni diversi. Consideriamo ad esempio "GameState" rispetto a "GameStatus": i due hanno implicazioni molto diverse e non sono intercambiabili.
BrainSlugs83,

-2

Non è la stessa cosa. Arrestati e avviati sono stati. L'arresto e l'avvio sono lo stato.

Se li rendi la stessa cosa, come descrivi il veicolo come fermo ma attualmente sta iniziando. O una domanda come attualmente presentata ma non è ancora entrata nel processo di approvazione o è in fase di approvazione ma è attualmente in attesa con una condizione di errore in attesa della firma?


1
OP stava chiedendo di usare l'uno o l'altro; non entrambi. Si potrebbe sostenere che Startingè davvero Statecompletamente distinto da Stopped. Dipende dalla semantica del tuo sistema . Controllare, ad esempio, i servizi di Windows.
Andrew Barber,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.