Konwencje nazewnictwa: „Stan” a „Stan” [zamknięty]


175

Krótkie pytanie: Chciałbym usłyszeć, co myślisz o tym, kiedy używać określenia „Stan”, a kiedy „Status”, podczas nazywania obu pól, takich jak „Foo.currentState”, „Foo.status” i typów, takich jak „wyliczenie FooState” kontra „wyliczenie” FooStatus ”. Czy jest tam dyskutowana konwencja? Czy powinniśmy używać tylko jednego? Jeśli tak, który z nich, a jeśli nie, to jak wybrać?


14
Heh. Któregoś dnia w pracy natknąłem się na jakąś strukturę, która miała jednego członka o nazwie „państwo”, a innego członka o nazwie „status”, a to były różne rzeczy. Zacząłem się zastanawiać, co znaczą te słowa i czy mam to zmienić, ale kod był stary, okrutny i działający, więc pozwoliłem temu śpiącemu psu kłamać. Och… to prawdopodobnie powinien być raczej „komentarz” niż „odpowiedź”, co? Komentarz, odpowiedź, stan, status… cokolwiek.
smcameron

9
I oczywiście to jest zamknięte. Stary dobry SO.
jn1kk

2
@jsn nie tylko jest zamknięte (co nie jest w dzisiejszych czasach?), ale nadal jest od dawna najbardziej popularną rzeczą, którą tu napisałem :)
Sophistifunk

8
To jest uzasadnione pytanie programowe. martinfowler.com/bliki/TwoHardThings.html

2
Stan to prosta etykieta, np. „Zdrowy”, „zdegradowany”, „niedostępny” itd. Stan obejmuje wszystkie krwawe szczegóły; np. wykorzystanie procesora i średnie obciążenie, wykorzystanie pamięci, wskaźniki JVM, użycie dysku itp.

Odpowiedzi:


107

To zależy od kontekstu

Stan ogólnie odnosi się do całego stanu bytu - wszystkich jego wartości i relacji w określonym momencie (zwykle jest to bieżące)

Status jest raczej punktem czasowym, powiedzmy, w którym coś jest w trakcie procesu lub przepływu pracy - czy jest brudne (dlatego wymaga zapisania), czy jest kompletne, czy oczekuje na wprowadzenie danych itp.

Mam nadzieję, że pomoże ci to w podjęciu decyzji.


211

IMO:

status == jak się masz? [dobry zły]

stan == co robisz? [odpoczynek / praca]


17
Gdzie byłeś w 2009 roku? Ta odpowiedź jest najbardziej sensowna w żargonie technicznym (stan procesora, stan wątku, automat stanowy; stan zwrotu, stan wolumenu rajdu itp.), A nawet w większości innych (stan aplikacji, stan konta itp.). Jedyne, co przychodzi mi do głowy, to niespójne rzeczy, takie jak „stan rzeczy” lub „stan rzeczy”, który bardziej przypomina Twój „status” (dobry / zły pomysł na rzeczy, które się dzieją, a nie na rzeczy, idą na siebie).
Peter

4
Stan oznacza również, że zawiera więcej informacji niż tylko „odpoczynek / praca” - ale wszystkie szczegóły dotyczące wykonywanej pracy (lub odpoczynku).
BrainSlugs83

3
„ Buduję domek na drzewie na podwórku mojego brata” byłby bardziej szczegółowym przykładem stanu , jak sugerujesz, @ BrainSlugs83. W tym przykładzie mój stan może być zmęczony / spocony / pełen energii / szczęśliwy.
spemble

4
Uwielbiam ten przykład. Czyste i zwięzłe. Dla mojego praktycznego zastosowania mógłbym uogólnić to na aksjomat, mówiąc, że Statepowinien on odzwierciedlać „wskazany węzeł” w grafie węzłów stanu maszyny stanu (lub przepływu pracy), gdzie opis może łatwo być przymiotnikiem słownym (często kończy się na „ -ing ”), podczas gdy Statusjest prostą właściwością obiektu, zwykłym przymiotnikiem, który może być użyty przez wyzwalacz lub jako wartość obserwowana dla decyzji o zmianie (lub utrzymaniu) stanu. Prawdopodobnie za dużo się nad tym zastanawiam. Robię to…
Alan McBee - MSFT

6
Zgadzam się: STATUS to wynik lub postęp zmiany w stanie STATE.
Neil

16

Zwykle używam stanu na oznaczenie bieżącego stanu obiektu lub systemu jako całości. Używam statusu do przedstawienia wyniku jakiegoś działania. Na przykład stan obiektu może być zapisany / niezapisany, ważny / nieprawidłowy. Status (wynik) metody jest pomyślny / nieudany / błąd. Myślę, że dość dobrze współgra to z definicją statusu jako „ stan lub warunek w odniesieniu do okoliczności ”, przy czym okolicznościami w tym przypadku jest zastosowanie działania / metody.


8

Innym (całkowicie pragmatycznym) powodem, dla którego warto przedkładać stan nad status, jest to, że liczba mnoga jest prosta:

  • stan -> stany
  • status -> statusy

I wierz mi, prędzej czy później będziesz miał listę lub tablicę lub cokolwiek innego ze stanów w swoim kodzie i będziesz musiał nazwać zmienną.


3
tylko się zastanawiam, czy status „liczba mnoga” nie powinien być stati?
BiAiB

Wikisłownik mówi statusy: en.wiktionary.org/wiki/status#Noun . Jednak inne języki mają inną liczbę mnogą.
robinst

9
Łacińska liczba mnoga to „statūs”, z długim u, a nie stati.
Paŭlo Ebermann

6

Myślę, że wiele osób używa określenia „Status” do przedstawienia stanu obiektu, jeśli nie z innego powodu niż „Stan” odnosi się do politycznego podziału Stanów Zjednoczonych.


11
to nie jest powód, dla którego kiedykolwiek korzystałem, ani nikt, z kim pracowałem lub czytałem tekst od ...
Luke Schafer

4
Więc co? To ważny powód. To konwencja nazewnicza.
Dave Markle

4
Tak. Również w Australii używamy terminu stan do opisania byłych pojedynczych kolonii, które zostały zjednoczone we Wspólnocie w 1901 roku. Dlatego używam tylko .status, ponieważ posiadanie .state jest często używane w strukturach danych, które mają adres.
Matthew Schinckel

Więc address.state = Tasmania; ma sens, ale device.state nie powinno obejmować geografii.
rozmawiaj

3

Myślę, że mógłbyś dodać inną perspektywę do równania, mianowicie „nadawca-żądający”.

Z punktu widzenia nadawcy informowałbym o swoim stanie każdego, kto chciałby słuchać. Z punktu widzenia osób proszących o podanie statusu.

Powyższe można również interpretować z punktu widzenia niepewności:

  • Zdefiniowano = stan
  • Niezdefiniowany = status

Jaki jest twój status? Jestem w stanie odprężenia.

Jestem prawie pewien, że to tylko jedna interpretacja, która może nie mieć zastosowania w twojej konkretnej sytuacji.


1

Szybkie sprawdzenie słownika ujawnia, że ​​status jest synonimem stanu, ale zawiera dodatkową interpretację pozycji w stosunku do pozycji innych .

Więc użyłbym stanu dla zestawu stanów, które nie mają żadnej niejawnej kolejności lub pozycji względem siebie, i statusu dla tych, które to robią (być może wyłączony w trybie gotowości?). Ale to dobre rozróżnienie.


1

Wiele podmiotów, z którymi mam do czynienia (rachunki, klienci) może mieć stan (TX, VA itp.) I Status (aktywny, zamknięty itp.)

Zatem kwestia dotycząca tego terminu jest myląca. Mamy znormalizowaną konwencję nazewnictwa baz danych (nie jest to mój osobisty wybór), w której stan jest nazywany ST_CDi status ACCT_STAT_CD.

W przypadku wyliczenia w środowisku OO ten problem nie jest tak ważny, ponieważ jeśli masz ścisłe bezpieczeństwo typów, kompilator zapewni, że nikt nie spróbuje tego zrobić:

theCustomer.State = Customer.Status.Active;

Jeśli jesteś w dynamicznym środowisku, martwiłbym się bardziej!

Jeśli masz do czynienia z domeną, w której maszyny stanowe lub inne informacje o stanie są dominujące, to myślę, że stan jest w porządku.


Adres należy do adresu klienta, a nie klienta jako takiego, np. TheCustomer.MailingAddress.State = Iowa;
rozmawiaj

@spemble Możliwe, że nie. Może to być również stan urodzenia lub miejsce zamieszkania, gdy jest dołączony do osoby bez adresu, i oczywiście może być dołączony do wielu innych podmiotów, takich jak adresy, licencje, zezwolenia itp. W każdym razie nie jestem pewien ma to znaczenie dla pytania, czy istnieje niejednoznaczność z użyciem wspólnego terminu domeny problemowej, takiego jak Stan, dla specyficznej dla implementacji maszyny stanowej / flagi / statusu. A następnie to, czy stan lub status mają różne znaczenia, czy nie.
Cade Roux

0

Taką właśnie debatę na temat mojego obecnego projektu przeprowadziliśmy jakiś czas temu. Naprawdę nie mam preferencji, ale spójność jest ważną kwestią.

Pierwsza (jest kilka) definicja „stanu” w moim Sharp PW-E550 (niesamowity słownik, mogę dodać) to „szczególny stan, w którym ktoś lub coś jest w określonym czasie”. Pierwsza definicja „statusu” to „względna społeczna, zawodowa lub inna pozycja kogoś lub czegoś”. Nawet druga (i ostatnia) definicja „statusu” jest gorsza od „państwa” w tym kontekście: „stan rzeczy w określonym czasie, zwłaszcza w kontekście politycznym lub handlowym”.

Więc gdybyśmy chcieli, żeby ktoś korzystał z mojego słownika tak łatwo, jak to tylko możliwe (korzysta z New Oxford American Dictionary, 2001), najlepszym wyborem będzie „stan”.

Ponadto istnieje wzorzec projektowy opisany w książce Gang of Four, zwany State Pattern, mocno utrwalający ten termin w leksykonie komputerowym.

Z tych powodów proponuję „stan”.

PS Czy to ty DDM? Nadal jesteś zgorzkniały, jeśli chodzi o „stan” kontra „status”? !!!!!!! LMAO!


-1

Cóż, mają na myśli to samo. Nie sądzę, aby konieczne było promulgowanie wielkiej preferencji jednego względem drugiego, ale generalnie wybrałbym „status”, ponieważ lubię rzeczy, które brzmią latyno i klasycystycznie. Mam na myśli, że w moim świecie liczba mnoga schematu to schemata, więc ze mną nie ma innego wyjścia.


Nie mają na myśli tego samego.
BrainSlugs83

Kontekstem tego pytania jest oprogramowanie, dlatego pytanie jest prawidłowe. Systemy komputerowe prawie zawsze muszą określać i raportować stan / stan różnych części systemu, a opisowe nazewnictwo staje się bardzo ważne dla osób, które debugują lub ulepszają oprogramowanie.
rozmawiaj

-1

Sophistifunk, jestem pewien, że dostaniesz argumenty zarówno za stanem, jak i statusem. Najważniejszą rzeczą do zrobienia jest wybranie jednego i użycie tylko jednego. Proponuję omówić to ze swoim zespołem i zobaczyć, na co wszyscy się zgadzają.

To powiedziawszy, moja sugestia jest następująca.

Zakładając, że używasz języka programowania zorientowanego obiektowo, „stan” obiektu jest reprezentowany przez sam obiekt. SomeObject.state wprowadza w błąd imo. Nie jestem pewien, co reprezentuje „status” w twoim przykładzie, ale moja naturalna intuicja jest taka, że ​​wolę to niż stwierdzenie.


1
Wybieranie jednego i trzymanie się tylko jednego jest absurdalne. Oba mają różne znaczenia i implikacje. Rozważmy na przykład „GameState” i „GameStatus” - oba mają bardzo różne konsekwencje i nie można ich stosować zamiennie.
BrainSlugs83

-2

Wcale nie to samo. Zatrzymane i uruchomione to stany. Zatrzymywanie i uruchamianie to status.

Jeśli uczynisz je tak samo, jak określisz pojazd jako zatrzymany, ale właśnie się uruchamia. A może wniosek w takiej postaci, w jakiej został złożony, ale nie wszedł jeszcze do procesu zatwierdzania lub jest zatwierdzany, ale jest obecnie wstrzymany z błędem oczekującym na podpis?


1
OP pytał o użycie jednego lub drugiego; nie oba. Można by się z tym spieraćStarting jest to rzeczywiście Statecałkowicie odmienne od Stopped. To zależy od semantyki twojego systemu . Sprawdź na przykład usługi Windows.
Andrew Barber
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.