Названня конвенцій: "Держава" проти "Статус" [закрито]


175

Швидке запитання: Я хотів би почути ваші думки про те, коли використовувати "State" проти "Status", коли називати обидва поля, такі як "Foo.currentState" проти "Foo.status", і такі типи, як "enum FooState" vs "enum FooStatus ". Чи там обговорюється конвенція? Чи слід використовувати лише один? Якщо так, то який, а якщо ні, то як вибрати?


14
Хе. Днями на роботі я зіткнувся з якоюсь структурою, яка мала члена, якого назвали "держава", а іншого члена назвали "статусом", і це були різні речі. Я почав думати про те, що означають ці слова, і про те, чи потрібно їх міняти, але код був старий і грубий і працюючий, тому я дозволив цьому сплячому собаці лежати. О .. це, мабуть, мало бути "коментарем", а не "відповіддю, а? Коментар, відповідь, штат, статус ... будь-що."
smcameron

9
І звичайно це закрито. Добре о, так.
jn1kk

2
@jsn - це не тільки закрито (що це не в ці дні?), але це все ще з дальнього пострілу найпопулярніша річ, яку я тут сприяв :)
Sophistifunk

8
Це законне питання програмування. martinfowler.com/bliki/TwoHardThings.html

2
Статус - це проста етикетка, наприклад "здоровий", "деградований", "недоступний" тощо. Держава включає всі деталі горіння; наприклад, середні

Відповіді:


107

Це залежить від контексту

Держава загалом відноситься до всього стану суб'єкта господарювання - усіх його цінностей і відносин у певний момент часу (зазвичай, поточного)

Статус є скоріше часовим моментом, скажімо, де щось знаходиться в процесі чи робочому процесі - чи брудне воно (тому вимагає збереження), чи закінчене, чи очікує на введення тощо

Я сподіваюся, що це допоможе вам у прийнятті рішення.


211

ІМО:

статус == як справи? [добре / погано]

держава == що ти робиш? [відпочиває / працює]


17
Де ти був у 2009 році? Ця відповідь має найбільше сенс у технічному жаргоні (стан процесора, стан потоку, стан машини; стан повернення, стан гучності рейду тощо), і навіть у більшості всього іншого (статус програми, статус облікового запису тощо). Єдине, що я можу подумати, що це непослідовно, - це такі речі, як "стан справ" або "стан речей", що більше нагадує ваш "статус" (гарна / погана ідея речей, що відбуваються, а не речей, які йти на себе).
Пітер

4
Держава також передбачає, що вона містить більше інформації, ніж просто "відпочиваючи / працюючи" - але всі деталі про роботу (або відпочинок), яку вона робить.
BrainSlugs83

3
"Я будую будинок з дерева на задньому подвір'ї брата", це був би більш детальний приклад стану , як ви пропонуєте, @ BrainSlugs83. У цьому прикладі мій статус може бути втомленим / потним / під напругою / щасливим.
spemble

4
Я люблю цей приклад. Чисто та лаконічно. Для мого практичного використання я міг би узагальнити його до аксіоми, кажучи, що він Stateповинен відображати "зазначений вузол" у графі вузлів стану-машини (або робочого процесу), де опис може бути легко дієслівним прикметником (часто закінчується на " -ing "), тоді Statusяк це проста властивість об'єкта, звичайний прикметник, який може бути використаний тригером або як спостережуване значення для рішення про зміну (або збереження) стану. Я, мабуть, це переосмислюю. Я роблю це ..
Алан Макбі - MSFT

6
Я погоджуюсь: СТАТУС - це результат або хід зміни ДЕРЖАВИ.
Ніл

16

Зазвичай я буду використовувати стан для позначення поточного стану об'єкта або системи в цілому. Я використовую статус для відображення результату якоїсь дії. Наприклад, стан об'єкта може бути збережено / збережено, допустимим / недійсним. Статус (результат) методу успішний / невдалий / помилка. Я думаю, що це непогано відповідає визначенню статусу як " стан чи стан щодо обставин ", причому обставини в цьому випадку є застосуванням дії / методу.


8

Ще одна (цілком прагматична) причина віддати перевагу стану над статусом полягає в тому, що множина є простою:

  • держава -> держави
  • статус -> статуси

І повірте, ви рано чи пізно у своєму коді будете мати список або масив чи будь-які стани, і вам доведеться назвати змінну.


3
просто цікаво, чи не має статус "множина бути статичним?
BiAiB

Вікісловник говорить про статуси: en.wiktionary.org/wiki/status#Noun . В інших мовах є різні множини для цього.
Робінст

9
Латинська множина - "statūs", з довгим u, не статичним.
Paŭlo Ebermann

6

Я думаю, що багато людей використовують "Статус" для представлення стану об'єкта, якщо з будь-якої іншої причини, ніж "штат", йдеться про політичний поділ США.


11
це не та причина, якою я ніколи не користувався, і ні з ким я не працював чи не читав текст з ...
Люк Шафер

4
І що? Це поважна причина. Це конвенція про іменування.
Дейв Маркл

4
Так. В Австралії ми також використовуємо термін "держава" для опису колишніх окремих колоній, які були об'єднані в Речі Посполитій у 1901 р. Отже, я схильний використовувати лише .status, оскільки "держава" часто використовується в структурах даних, які мають адресу.
Меттью Шинкель

Отже address.state = Тасманія; має сенс, але не слід очікувати, що device.state включає географію.
spemble

3

Я думаю, ви можете додати ще одну точку зору до рівняння, а саме: «відправник-запитувач».

З погляду відправників, я б спілкувався зі своєю державою з усіма бажаючими слухати. Хоча з точки зору запитувача, я б просив чийсь статус.

Сказане також можна трактувати з точки зору невизначеності:

  • Визначено = стан
  • Не визначено = статус

Який у вас статус? Я в розслабленому стані.

Я впевнений, що це лише одна інтерпретація, яка може не стосуватися вашої конкретної ситуації.


1

Швидка перевірка словника виявляє, що статус є синонімом стану, але має додаткове тлумачення позиції щодо позиції інших .

Тож я б використовував стан для набору станів, які не мають явного впорядкування чи положення відносно один одного, а також статус для тих, що роблять (можливо, поза режимом очікування?). Але це чудова відмінність.


1

Багато організацій, з якими я маю справу (рахунки, клієнти), можуть мати стан (TX, VA тощо) та статус (активний, закритий тощо)

Тож можливий пункт про те, що термін вводить в оману. У нас є стандартизована конвенція про іменування баз даних (не мій особистий вибір), де названо ST_CDстан і статус буде ACCT_STAT_CD.

З перерахунком в середовищі OO, ця проблема не є настільки важливою, оскільки якщо ви маєте сувору безпеку типу, компілятор забезпечить, щоб ніхто не намагався цього зробити:

theCustomer.State = Customer.Status.Active;

Якщо ви перебуваєте в динамічному оточенні, я б більше хвилювався!

Якщо ви маєте справу з доменом, де державні машини чи інша державна інформація, і ця термінологія є переважаючою, я вважаю, що штат ідеально.


Адреса належить адресі замовника, а не клієнту як такому, наприклад, theCustomer.MailingAddress.State = Айова;
spemble

@spemble Можливо, а можливо і ні. Це також може бути стан народження або місце проживання, коли він приєднується до особи, яка відсутня адресу, і, звичайно, може бути приєднана до багатьох інших організацій, таких як адреси, ліцензії, дозволи тощо. У будь-якому випадку, я не впевнений це стосується питання про те, чи існує неоднозначність використання загального проблемного терміна домену типу State для конкретної реалізації машини машини / прапор / статус. І тоді держава чи статус мають чи не мають різного значення.
Кейд Ру

0

Ми мали певну дискусію щодо мого поточного проекту. Я справді не маю уподобань, але послідовність є важливим фактором.

Перше (існує декілька) визначення "стану" в моєму Sharp PW-E550 (я можу додати, дивовижний словник) - "особлива умова, у якій хтось чи щось знаходиться в певний час". Перше визначення поняття "статус" - це "відносна соціальна, професійна чи інша позиція когось чи чогось". Навіть друге (і останнє) визначення поняття "статус" у цьому контексті поступається "державному": "положення справ у певний час, особливо в політичному чи комерційному контексті".

Тож якби ми хотіли, щоб хтось користувався моїм словником як можна простіше (він використовує New Oxford American Dictionary, 2001), "стан" був би найкращим вибором.

Крім того, існує схема дизайну, описана в книзі «Банда четвірок» під назвою «Державний зразок», що твердо встановлює термін у лексиці обчислень.

З цих причин я пропоную "державний".

PS Це ти DDM? Ви все ще гірко ставитесь до "держави" проти "статусу"? !!!!!!! LMAO!


-1

Що ж, вони означають те саме. Я не думаю, що потрібно оприлюднювати велику перевагу одних над іншими, але я б взагалі йшов із "статусом", тому що мені подобаються речі, які звучать латиноамериканською та класицистською. Я маю на увазі, що в моєму світі множина схем - це схеми, тому іншого способу для мене, як і раніше, немає.


Вони не означають одне і те ж.
BrainSlugs83

Контекст цього питання - це програмне забезпечення, тому питання є дійсним. Комп'ютерні системи, як правило, завжди мають визначати та повідомляти про стан / стан різних частин системи, а іменування речей описово стає дуже важливим для людей, які налагоджують або вдосконалюють програмне забезпечення.
spemble

-1

Sophistifunk, я впевнений, що ви отримаєте аргументи як для держави, так і для статусу. Найголовніше, що потрібно зробити, - це те, що ти вибираєш один і використовуєш лише одне. Я б запропонував обговорити це зі своєю командою і подивитися, на що всі згодні.

Однак, моя пропозиція полягає в наступному.

Припустимо, що ви використовуєте об'єктно-орієнтовану мову програмування, "стан" об'єкта представлений самим об'єктом. SomeObject.state вводить в оману imo. Я не впевнений, що означає "статус" у вашому прикладі, але моя природна інтуїція полягає в тому, щоб віддати перевагу цьому.


1
Вибирати одне і дотримуватися лише одного - це абсурд. Вони мають різні значення та значення. Розглянемо для прикладу "GameState" проти "GameStatus" - вони мають дуже різні наслідки і не є взаємозамінними.
BrainSlugs83

-2

Зовсім не те саме. Зупинені та розпочаті - це держави. Зупинка та запуск - це статус.

Якщо ви змусите їх зробити те саме, як ви описуєте транспортний засіб як зупинений, але наразі починається. Або заявка, яка наразі подана, але ще не вступила в процес затвердження, або зараз затверджена, але наразі затримана із умовою помилки очікування підпису?


1
ОП запитували про використання того чи іншого; не обидва. Можна стверджувати, що Startingце справді Stateабсолютно відмінне Stopped. Це залежить від семантики вашої системи . Перевірте, наприклад, служби Windows.
Ендрю Барбер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.