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.