Соглашения об именах: «Состояние» против «Статус» [закрыто]

175

Быстрый вопрос: я хотел бы услышать ваши мысли о том, когда использовать «State» против «Status» при именовании обоих полей, таких как «Foo.currentState» и «Foo.status», и типов, таких как «enum FooState» против «enum» FooStatus». Обсуждается ли там конвенция? Должны ли мы использовать только один? Если да, то какой, а если нет, то как мы должны выбрать?

Sophistifunk
источник
14
Хех. На днях на работе я столкнулся с какой-то структурой, в которой был член с именем «штат» и другой член с именем «статус», и это были разные вещи. Я начал думать о том, что означают эти слова, и о том, стоит ли их менять, но код был старым, грубым и работающим, поэтому я позволил этой спящей собаке лгать. Ох .. это, вероятно, должен был быть «комментарий», а не «ответ», а? Комментарий, ответ, состояние, статус ... что угодно.
smcameron
9
И конечно это закрыто. Добрый день, ТАК.
jn1kk
2
@jsn не только закрыт (что не происходит в наши дни?), но и по- прежнему является самой популярной вещью, которую я здесь внес :)
Sophistifunk
8
Это законный вопрос программирования. martinfowler.com/bliki/TwoHardThings.html
2
Статус - это простая метка, например «здоров», «ухудшен», «недоступен» и т. Д. Государство включает все кровавые подробности; например, загрузка ЦП и средние значения загрузки, использование памяти, метрики JVM, использование диска и т. д.

Ответы:

107

Это зависит от контекста

Состояние обычно относится ко всему состоянию объекта - всем его значениям и отношениям в определенный момент времени (обычно текущий)

Состояние - это скорее момент времени, скажем, где что-то находится в процессе или рабочем процессе - является ли оно грязным (поэтому требует сохранения), завершено ли это, ожидает ли ввода и т. Д.

Я надеюсь, что это поможет вам в вашем решении.

Люк Шефер
источник
211

IMO:

статус == как дела? [хорошо плохо]

состояние == что ты делаешь? [Отдых / работа]

spemble
источник
17
Где вы были в 2009 году? Этот ответ имеет наибольшее значение в техническом жаргоне (состояние процессора, состояние потока, конечный автомат; состояние возврата, состояние громкости рейда и т. Д.) И даже во всем остальном (статус приложения, состояние учетной записи и т. Д.). Единственное, что я могу думать о том, что это противоречиво, это такие вещи, как «положение вещей» или «положение вещей», которое больше похоже на ваш «статус» (хорошее / плохое представление о происходящем, а не о вещах, которые иди на себя).
Питер
4
Состояние также подразумевает, что в нем содержится больше информации, чем просто «отдых / работа» - но все подробности о работе (или отдыхе), которую он выполняет.
BrainSlugs83
3
«Я строю дом на дереве на заднем дворе моего брата» , как вы предлагаете, был бы более подробный пример состояния , @ BrainSlugs83. В этом примере мой статус может быть усталым / потным / возбужденным / счастливым.
spemble
4
Мне нравится этот пример. Чистый и лаконичный. Для моего практического использования я мог бы обобщить его до аксиомы, сказав, что он Stateдолжен отражать «указанный узел» в графе узлов состояний конечного автомата (или рабочего процесса), где описание может легко быть словесным прилагательным (часто оканчивающимся на « -ing "), тогда Statusкак это простое свойство объекта, простое прилагательное, которое может использоваться триггером или как наблюдаемое значение для решения об изменении (или сохранении) состояния. Я, наверное, обдумываю это. Я делаю это ..
Алан Макби - MSFT
6
Я согласен: СОСТОЯНИЕ - это результат или прогресс изменений в ГОСУДАРСТВЕ.
Нил
16

Обычно я буду использовать State для обозначения текущего состояния объекта или системы в целом. Я использую статус, чтобы представить результат какого-либо действия. Например, состояние объекта может быть сохранено / несохранено, допустимо / недействительно. Статус (результат) метода успешен / неуспешен / ошибка. Я думаю, что это очень хорошо согласуется с определением статуса как « состояние или состояние по отношению к обстоятельствам », при этом обстоятельства в данном случае являются применением действия / метода.

tvanfosson
источник
8

Другая (вполне прагматичная) причина, по которой государство предпочитает статусу, заключается в том, что множественное число является простым:

  • штат -> штаты
  • статус -> статусы

И поверьте мне, у вас рано или поздно появится список, массив или другие состояния в вашем коде, и вам придется назвать переменную.

robinst
источник
3
просто интересно, разве не должен быть статус «множественное число?
BiAiB
Викисловарь говорит о статусах: en.wiktionary.org/wiki/status#Noun . У других языков есть различные множественные числа для этого все же.
Робинст
9
Латинское множественное число - "statūs", с длинным u, не stati.
Паŭло Эберманн
6

Я думаю, что многие люди используют «Статус» для представления состояния объекта, если по какой-либо другой причине, кроме «Государство», относится к политическому разделению Соединенных Штатов.

Дейв Маркл
источник
11
это не причина, которую я когда-либо использовал, ни кто-либо, с кем я когда-либо работал или читал текст ...
Люк Шафер
4
Ну и что? Это веская причина. Это соглашение об именах.
Дэйв Маркл
4
Ага. В Австралии мы также используем термин «государство» для описания бывших отдельных колоний, которые были объединены в Содружестве в 1901 году. Поэтому я склонен использовать только .status, поскольку .state часто используется в структурах данных, имеющих адрес.
Мэтью Шинкель
Так что address.state = Тасмания; имеет смысл, но не ожидается, что device.state будет включать географию.
spemble
3

Я думаю, что вы могли бы добавить еще одну перспективу к уравнению, а именно «отправитель-запросчик».

С точки зрения отправителей, я бы сообщал о своем состоянии всем, кто хочет слушать. Хотя с точки зрения запрашивающих, я бы спрашивал чей-то статус.

Вышесказанное также можно интерпретировать с точки зрения неопределенности:

  • Определено = состояние
  • Не определено = статус

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

Я уверен, что это только одна интерпретация, которая может не относиться к вашей конкретной ситуации.

Мишель Веркаик
источник
1

Быстрая проверка по словарю показывает, что статус является синонимом состояния, но имеет дополнительную интерпретацию позиции относительно позиции других .

Поэтому я бы использовал состояние для набора состояний, которые не имеют какого-либо неявного упорядочения или положения относительно друг друга, и состояние для тех, которые имеют (возможно, в режиме ожидания?). Но это отличительная черта.

Брайан Агнью
источник
1

Многие организации, с которыми я имею дело (учетные записи, клиенты), могут иметь состояние (TX, VA и т. Д.) И статус (активный, закрытый и т. Д.)

Таким образом, пункт о том, что термин вводит в заблуждение, возможен. У нас есть стандартизированное соглашение о присвоении имен базам данных (не мой личный выбор), в котором состояние называется ST_CDи статус будет ACCT_STAT_CD.

С перечислением в OO milieux эта проблема не так важна, так как, если у вас строгая безопасность типов, компилятор гарантирует, что никто не попытается сделать это:

theCustomer.State = Customer.Status.Active;

Если вы находитесь в динамичной среде, я бы больше волновался!

Если вы имеете дело с доменом, где преобладают конечные автоматы или другая информация о состоянии, и эта терминология преобладает, то я думаю, что State в порядке.

Кейд Ру
источник
Адрес принадлежит адресу клиента, а не клиенту, например, theCustomer.MailingAddress.State = Iowa;
spemble
@spemble Возможно, а возможно и нет. Это также может быть штат рождения или штат проживания, когда он привязан к лицу, у которого нет адреса, и, конечно, может быть привязан ко многим другим объектам, таким как адреса, лицензии, разрешения и т. Д. В любом случае я не уверен это имеет отношение к вопросу о том, существует ли неоднозначность при использовании общего термина проблемной области, такого как State, для конкретной реализации конечного автомата / флага / статуса. И затем, имеет ли государство или статус разные значения или нет.
Кейд Ру
0

У нас были точные дебаты о моем текущем проекте некоторое время назад. У меня действительно нет предпочтений, но последовательность является важным фактором.

Первое (есть несколько) определение «состояния» в моем Sharp PW-E550 (я бы добавил потрясающий словарь) - это «особое состояние, в котором кто-то или что-то находится в определенное время». Первое определение «статуса» - это «относительное социальное, профессиональное или иное положение кого-либо или чего-либо». Даже второе (и последнее) определение «статуса» уступает «государству» в этом контексте: «положение дел в определенное время, особенно в политическом или коммерческом контексте».

Поэтому, если бы мы хотели, чтобы кто-то использовал мой словарь как можно проще (он использует New Oxford American Dictionary, 2001), «state» был бы лучшим выбором.

Кроме того, в книге «Банды четырех» описан паттерн проектирования, называемый паттерном состояния, который четко определяет термин в вычислительной лексике.

По этим причинам я предлагаю «государство».

PS Это ты ДДМ? Вы все еще горьки о "состоянии" против "статуса"? !!!!!!! LMAO!

les2
источник
-1

Ну, они означают одно и то же. Я не думаю, что необходимо провозглашать большое предпочтение одного перед другим, но я бы обычно использовал «статус», потому что мне нравятся вещи, которые звучат латинскими и классицистическими. Я имею в виду, что в моем мире множественное число схем - это схемы, поэтому у меня почти нет другого пути.

хаос
источник
Они не имеют в виду одно и то же.
BrainSlugs83
Контекст для этого вопроса - программное обеспечение, поэтому вопрос является действительным. Компьютерные системы почти всегда должны определять и сообщать о состоянии / состоянии различных частей системы, и описательное наименование становится очень важным для людей, которые отлаживают или улучшают программное обеспечение.
заклинание
-1

Sophistifunk, я уверен, что вы получите аргументы как для государства, так и для статуса. Самое главное, чтобы вы выбрали один, и использовать только один. Я бы посоветовал обсудить это с вашей командой и посмотреть, с чем все согласны.

Тем не менее, мое предложение заключается в следующем.

Предполагая, что вы используете объектно-ориентированный язык программирования, «состояние» объекта представляется самим объектом. SomeObject.state вводит в заблуждение IMO. Я не уверен, что означает «статус» в вашем примере, но моя естественная интуиция состоит в том, чтобы предпочесть это утверждению.

hobodave
источник
1
Выбор одного и придерживаться только одного абсурдно. Оба имеют разные значения и последствия. Рассмотрим, например, «GameState» против «GameStatus» - они имеют очень разные значения и не являются взаимозаменяемыми.
BrainSlugs83
-2

Совсем не одно и то же. Остановлены и запущены состояния. Остановка и запуск - это статус.

Если вы сделаете их одинаковыми, как вы опишите транспортное средство как остановленное, но в данный момент запускающее. Или заявка, поданная в настоящее время, но еще не вступившая в процесс утверждения или утверждаемая, но в настоящее время приостановленная с условием ошибки ожидания подписи?

Энди Робинсон
источник
1
ОП спрашивал об использовании одного или другого; не оба. Можно утверждать, что Startingэто действительно Stateсовершенно отличается от Stopped. Это зависит от семантики вашей системы . Проверьте, например, Windows Services.
Эндрю Барбер