命名约定:“状态”与“状态” [关闭]


175

快速问题:我想听听您在命名两个字段(例如“ Foo.currentState”,“ Foo.status”)和类型(例如“枚举FooState”和“枚举”)时何时使用“状态”和“状态”的想法FooStatus”。是否有讨论过的约定?我们应该只使用一个吗?如果是这样的话,如果不是,我们应该如何选择?


14
嘿。前几天,我遇到了一个结构,该结构有一个名为“ state”的成员和另一个名为“ status”的成员,它们是不同的东西。我开始考虑这些单词的含义,以及是否要更改它,但是代码又旧又硬而且可以正常工作,所以我让那条熟睡的狗撒谎。呵呵..这大概应该是一个“评论,”而不是“的答案,哎评论,答案,状态,状态...什么?
smcameron

9
当然,这是关闭的。好吧。
jn1kk 2013年

2
@jsn不仅关闭了(这些日子不是什么?),但从长远来看,它仍然是我在这里贡献的最受欢迎的东西:)
Sophistifunk 2014年

8
这是一个合法的编程问题。 martinfowler.com/bliki/TwoHardThings.html

2
状态是一个简单的标签,例如“健康”,“降级”,“不可用”等。状态包括所有血腥细节。例如,CPU UTIL和平均负载,存储器UTIL,JVM度量,磁盘使用率等

Answers:


107

这取决于上下文

状态通常是指实体的整个状态-在特定时间点(通常是当前)的所有值和关系

状态更像是一个时间点,例如,流程或工作流中的某处-是否脏(因此需要保存),是否完成,是否有待处理的输入等

希望对您的决定有所帮助。


211

海事组织:

状态==你好吗?[好坏]

状态==您在做什么?[休息/工作]


17
你2009年在哪里?这个答案在技术术语(cpu状态,线程状态,状态机;返回状态,raid卷状态等)以及其他所有内容(应用程序状态,帐户状态等)中最有意义。我唯一能想到的就是不一致,例如“事务状态”或“事物状态”之类的东西,更像是您的“状态”(正在发生的事情的好/坏主意,而不是那些正在发生的事情。继续前进)。
彼得

4
State还意味着它不仅拥有“休息/工作”信息,而且还拥有更多的信息-而是有关其正在进行的工作(或休息)的所有细节。
BrainSlugs83

3
“我建立一个树屋在弟弟的后院”将是一个更详细的示例状态,正如你提到的,@ BrainSlugs83。在这个例子中,我的状态可能是疲倦/多汗/精力充沛/快乐。
2014年

4
我喜欢这个例子。干净简洁。对于我的实际用法,我可以将其概括为一个公理,方法是说它State应该反映状态机(或工作流)状态节点图内的“指示节点”,其中描述可能很容易是口头形容词(通常以“ “ -ing”),而它Status是对象的简单属性,一个简单的形容词,可以由触发器使用,也可以作为观察值来决定更改(或保持)状态。我可能想得太多。我这样做..
艾伦·麦克比

6
我同意:状态是状态变更的结果或进度。
尼尔

16

通常,我将使用状态来表示对象或整个系统的当前状态。我用地位来代表某些行动的结果。例如,对象的状态可以被保存/未保存,有效/无效。方法的状态(结果)是成功/失败/错误。我觉得这个嘲弄得不错的状态定义为“ 状态或条件相对于情况,”在这种情况下,动作片/方法的应用情况。


8

相对于地位更偏爱状态的另一个(完全务实的)理由是复数很简单:

  • 状态->状态
  • 状态->状态

并相信我,您迟早会在代码中有一个列表或数组或任何状态,并且必须命名该变量。


3
只是想知道,地位不应该是Stati吗?
BiAiB 2012年

Wiktionary指出状态:en.wiktionary.org/wiki/status#Noun。其他语言虽然有不同的复数形式。
罗宾斯特2012年

9
拉丁语的复数形式为“statūs”,带有较长的u,而不是stati。
圣保罗Ebermann

6

我认为,如果“状态”仅指美国的政治分裂,那么许多人都使用“状态”来表示对象的状态。


11
这不是我曾经使用过的原因,也不是我每个人都从事过的工作或从中读过文字的原因……
路加·谢弗

4
所以呢?这是有道理的。这是一个命名约定。
戴夫·马克尔

4
是的 在澳大利亚,我们也使用州一词来描述1901年在英联邦中统一的以前的单个殖民地。因此,我倾向于仅使用.status,因为在具有地址的数据结构中经常使用.state。
马修·申克尔

所以address.state =塔斯马尼亚州;是有道理的,但是device.state不会涉及地理。

3

我认为您可以在方程式中添加另一个视角,即“发件人请求者”。

从发件人的角度来看,我将与愿意倾听的任何人交流我的状态。从请求者的角度来看,我要询问某人的身份。

以上内容也可以从不确定性的角度进行解释:-定义=状态-未定义=状态您的状态是什么?我处于放松状态。

我很确定这只是一种解释,可能不适用于您的特定情况。


1

快速的字典检查显示状态是状态的同义词,但是具有相对于其他位置的位置的附加解释。

因此,我将状态用于一组相对于彼此没有任何隐式顺序或位置的状态,将状态用于那些具有相对状态的状态(也许是off-standby-on?)。但这是一个很好的区别。


1

我处理的许多实体(帐户,客户)可能有一个状态(TX,VA等)和一个状态(有效,已关闭等)

因此,有关该术语具有误导性的观点是可能的。我们有一个标准化的数据库命名约定(不是我个人的选择),其中命名ST_CD一个状态,一个状态为ACCT_STAT_CD

对于OO milieux中的枚举,此问题并不重要,因为如果您具有严格的类型安全性,则编译器将确保没有人尝试这样做:

theCustomer.State = Customer.Status.Active;

如果您处于动态环境中,我会更加担心!

如果您要处理的领域是状态机或其他状态信息,并且该术语占主导地位,那么我认为State完全可以。


该地址属于客户的地址,而不是客户本身,例如,Customer.MailingAddress.State = Iowa;

@spemble可能,也许不是。当附加到没有地址的人时,它也可以是出生状态或居住状态,当然也可以附加到许多其他实体,例如地址,许可证,许可证等。无论如何,我不确定这与以下问题有关:对于状态机/标志/状态的特定于实现的问题,使用像State这样的常见问题域术语是否存在歧义。然后,状态或状态是否具有不同的含义。
Cade Roux

0

不久前,我们对我当前的项目进行了确切的辩论。我确实没有偏好,但是一致性是一个重要的考虑因素。

在我的Sharp PW-E550(我可能会添加一本很棒的词典)中,“状态”的第一个(有几个)定义是“某人或某物在特定时间处于的特定条件”。“状态”的第一个定义是“某人或某物的相对社会地位,专业地位或其他地位”。在这种情况下,甚至“状态”的第二个(也是最后一个)定义都不如“状态”:“在特定时间的事务位置,尤其是在政治或商业环境中”。

因此,如果我们希望对使用我的词典的人来说尽可能的容易(使用《新牛津美国词典》,2001年),“州”将是最佳选择。

此外,在“四人帮”一书中描述的一种设计模式称为“状态模式”,可以在计算词典中牢固地建立该术语。

由于这些原因,我建议使用“状态”。

PS是DDM吗?您还在为“状态”与“状态”而苦吗?AO!


-1

好吧,他们的意思是一样的。我认为没有必要大声疾呼一个人优先于另一个人,但是我通常会选择“状态”,因为我喜欢听起来像拉丁和古典主义者的东西。我的意思是,在我的世界中,模式的复数就是模式,因此,对于我来说,它几乎没有其他选择。


他们不是同一件事。
BrainSlugs83

该问题的上下文是软件,这就是为什么该问题有效的原因。计算机系统几乎总是必须确定并报告系统各个部分的状态/状态,并且描述性地命名事物对于调试或改进软件的人员而言非常重要。
'14

-1

Sophistifunk,我确定您会同时获得State和Status的参数。最重要的是选择一个,然后仅使用一个。我建议与您的团队讨论此事,看看每个人都同意什么。

也就是说,我的建议如下。

假设您使用的是面向对象的编程语言,则对象的“状态”由对象本身表示。SomeObject.state误导了imo。我不确定您的示例中的“状态”是什么,但是我的直觉是希望用这种方式来说明。


1
挑一个而只坚持一个是荒谬的。两者具有不同的含义和含义。考虑一下“ GameState”和“ GameStatus”,这两者具有非常不同的含义并且不可互换。
BrainSlugs83

-2

完全不一样。停止和启动是状态。停止和启动是状态。

如果将它们设为相同,则如何将车辆描述为已停止但正在启动。还是当前提交但尚未进入批准流程或正在被批准但当前处于等待签名错误状态的申请?


1
OP正在询问使用其中一个。不是都。有人可能认为这Starting确实与State完全不同Stopped这取决于系统的语义。例如,检查Windows服务。
安德鲁·巴伯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.