Questions tagged «state»

17
为什么全球国家如此邪恶?
在我们开始之前,让我说我非常了解抽象和依赖注入的概念。我不需要在这里睁开眼睛。 好吧,我们大多数人在没有真正理解的情况下说了太多次了,“不要使用全局变量”,或者“ Singletons之所以邪恶是因为它们是全局的”。但真正是如此不好的不祥的全局状态? 假设我需要为应用程序进行全局配置,例如系统文件夹路径或应用程序范围的数据库凭据。 在那种情况下,除了在某种全局空间中提供这些设置之外,我看不到任何好的解决方案,这对于整个应用程序都是通用的。 我知道这是不好的滥用,但是全球空间真的THAT邪?如果是的话,那里有什么好的替代方案?

22
全局变量与数据库有何不同?
我只是碰到了这个老问题,问全局状态有什么弊端,最受好评的答案断言您不能信任任何与全局变量一起使用的代码,因为其他地方可能会出现其他代码并对其进行修改值,然后您将不知道代码的行为,因为数据不同! 但是,当我看到这一点时,我不禁会认为这是一个很弱的解释,因为与使用数据库中存储的数据有何不同? 当您的程序正在使用来自数据库的数据时,您不必担心系统中的其他代码是否正在更改它,或者即使是完全不同的程序正在更改它。您不在乎数据是什么。这就是重点。重要的是您的代码可以正确处理它遇到的数据。(显然,我正在解决这里经常遇到的棘手的缓存问题,但是暂时让我们忽略它。) 但是,如果您正在使用的数据来自您的代码无法控制的外部来源,例如数据库(或用户输入,网络套接字或文件等),则没有任何问题这样一来,那么代码本身内的全局数据(程序对它具有更大程度的控制)又如何呢?当它显然远比没有人认为是问题的完全正常的东西坏得多时,这又是一件坏事呢?
250 state  globals 

8
如何使应用程序保持无状态
这可能是一个令人费解的问题,但是我试图更好地理解无状态。 根据我的阅读,Web应用程序应该是无状态的,这意味着每个请求都被视为独立的事务。因此,应避免使用Session和Cookies(因为它们都是有状态的)。更好的方法是使用令牌,令牌是无状态的,因为服务器上没有存储任何内容。 因此,我试图理解,当会话中保留有数据(例如购物车中的物品)时,Web应用程序如何变得无状态?这些实际上存储在某个地方的数据库中,然后定期清除吗?当您使用令牌而不是cookie时,这如何工作? 然后作为一个相关问题,主要网站(亚马逊,谷歌,Facebook,Twitter等)是否实际上是无状态的?他们使用令牌还是cookie(或两者都使用)?

4
什么是状态,可变状态和不可变状态?
这是一个新手问题,但我在Google上找不到足够的新手证明答案。 人们说“状态”是什么意思-在一般的编程中,特别是在OO编程中? 另外,什么是可变的和不可变的状态-同样,通常在编程中,尤其是在OOP中?
32 state 

5
函数式编程:关于并发和状态的正确想法?
FP支持者声称并发很容易,因为它们的范例避免了可变状态。我不明白 想象一下,我们正在使用FP创建一个多人地下城抓取(类似于Rogue),其中我们强调纯函数和不可变数据结构。我们生成一个由房间,走廊,英雄,怪物和战利品组成的地牢。我们的世界实际上是结构及其相互关系的对象图。随着事物的变化,我们对世界的表示也会进行修改以反映这些变化。我们的英雄杀死一只老鼠,捡起短剑,等等。 对我而言,世界(当前现实)带有这种状态观念,而我却缺少FP如何克服这种状况。当我们的英雄采取行动时,功能会改变世界状况。似乎每个决定(人工智能或人为决定)都需要基于当前的现状。我们在哪里允许并发?我们不能同时有多个进程来修改世界状态,以免一个进程的结果基于某个过期状态。在我看来,所有控制都应在单个控制循环中进行,以便我们始终在处理由当前当前对象图表示的当前状态。 显然,有些情况非常适合并发(例如,在处理状态彼此独立的孤立任务时)。 我没有看到并发在我的示例中如何有用,这可能是问题所在。我可能以某种方式歪曲了这一主张。 有人可以更好地代表这一主张吗?

1
是否有很好的形式化模式来管理MVVM中的状态?
我已经开始了解网络世界中的Redux和React,并且对它的了解越多,我越意识到WPF的MVVM风格的架构在桌面世界中的状态管理是多么痛苦(使用Caliburn专门绑定视图)。到ViewModels)。 Redux有一些简单的原则,指示如何管理状态,从而使UI更新,事件处理和状态更改更加可预测。原则是: 单一事实来源(所有可变状态都存储在单个共享库中)。 状态为只读。组件无法在整个代码中对其进行修改,这通常是WPF中发生的情况。 状态只能通过纯函数进行修改。 WPF的MVVM体系结构允许您非常快速地构建交互式视图,但是当各种视图模型和事件都改变状态时调试问题是一场噩梦。例如:触发了一个事件,该事件更改了视图并尝试设置默认选项卡,但是数据尚未从Web服务异步加载完成,因此该选项卡不存在(尚未),因此没有任何反应 我花了数小时来绘制图表,以尝试理解相互更新的相互关联的viewModels组件之间的复杂交互。 我了解Redux旨在解决这种状态不可预测的问题。是否有类似的东西,或与WPF很好地配合以更好地管理状态的体系结构模式?我不确定Redux原则在.NET中的运行情况如何,因为我还没有尝试过。也许有人有经验可以提供一些建议?
21 wpf  mvvm  state  redux 

2
在类中定义一个大型私有函数以保持有效状态(即更新对象的数据成员)是否是一个好主意?
尽管在下面的代码中使用的是在电子商务站点中简单的单项购买,但我的一般问题是有关更新所有数据成员以始终保持对象数据处于有效状态的信息。 我发现“一致性”和“国家是邪恶的”是相关的短语,在这里进行了讨论:https : //en.wikibooks.org/wiki/Object_Oriented_Programming#.22State.22_is_Evil.21 <?php class CartItem { private $price = 0; private $shipping = 5; // default private $tax = 0; private $taxPC = 5; // fixed private $totalCost = 0; /* private function to update all relevant data members */ private function updateAllDataMembers() { $this->tax = $this->taxPC * …

3
“状态”还是“状态”?变量名称何时应包含单词“状态”,变量名称应何时包含单词“状态”?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 在阅读代码和有关代码的讨论时,我经常看到“状态”和“状态”这两个词可以互换使用,但是似乎存在以下趋势: 当变量具有旨在指示某物处于某种状态的值时,该变量的名称通常不包含单词“状态”或其缩写。 但是,当函数的返回值用于指示某种状态时,我们倾向于将该值称为“状态码”;当该值存储在变量中时,该变量通常称为“状态”或类似名称。 我想孤立地很好,但是当上述变量实际上是相同的时,就需要做出选择,涉及英语(或一般人类语言)的错综复杂。 当要在两者之间进行歧义消除时,目前流行的编码标准或约定是什么?还是应该始终避免这两者之一? 我想,这个english.stackexchange问​​题也很重要。

4
IO monad模式处理副作用的好处是否纯粹是学术上的?
对不起,还有另一个FP +副作用问题,但是我找不到一个可以完全回答我的问题。 我对函数式编程的(有限的)理解是,应将状态/副作用最小化并与无状态逻辑分开。 我还收集了Haskell的方法,即IO monad,它通过将有状态的动作包装在一个容器中以供以后执行(被认为超出程序本身的范围)来实现。 我试图理解这种模式,但实际上是确定是否在Python项目中使用它,因此要避免使用Haskell规范。 粗暴的例子来了。 如果我的程序将XML文件转换为JSON文件: def main(): xml_data = read_file('input.xml') # impure json_data = convert(xml_data) # pure write_file('output.json', json_data) # impure IO monad的方法不是有效地做到这一点: steps = list( read_file, convert, write_file, ) 然后通过不实际调用这些步骤来放任自己的责任,而是让口译员这样做? 换一种说法,就像写: def main(): # pure def inner(): # impure xml_data = read_file('input.xml') json_data = convert(xml_data) write_file('output.json', …

2
有状态库顶部的无副作用界面
在约翰·休斯(John Hughes)的采访中,他谈到了Erlang和Haskell,他对在Erlang中使用有状态的库有以下看法: 如果要使用有状态的库,通常会在其之上构建无副作用的接口,以便随后可以在其余代码中安全地使用它。 他是什么意思?我试图考虑一个例子,但是我的想象力和/或知识使我失望。

11
有什么更好的IllegalStateException或无声方法执行?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 假设我有一个MediaPlayer类,该类具有play()和stop()方法。如果以前没有调用过play方法,则在实现stop方法时使用的最佳策略是什么。我看到两个选项:由于播放器未处于适当状态而引发异常,或无提示地忽略对​​stop方法的调用。 当在某些情况下不应该调用某个方法但该方法的执行对程序总体无害时,一般规则应该是什么?

4
“状态”的定义
在状态变量或状态机中为新的(以前是非)程序员定义“状态”的好方法是什么?有什么好的方法可以解释为什么这个概念对编写软件有用?通常在开始编程课程或书本中明确教过国家概念吗?

4
功能范式与底层硬件是否过于分散,以至于总体上效率不高?
受到SO中一个问题的启发:https://stackoverflow.com/questions/6623391/how-to-gain-control-of-a-5gb-heap-in-haskell 关于FP的众多优点和缺点可能是一个漫长的辩论,但就目前而言,我想将FP 的范围缩小到现代硬件上FP的主要效率。 论文: 功能范式意味着不变性和无状态性(?),但是我们运行功能性程序的硬件是有状态的有限自动机。将“纯功能”程序转换为“有状态硬件”表示形式后,程序员几乎无法控制,带来了开销(?),并限制了硬件功能(?)的使用。 我在质疑的陈述中是对还是错? 是否可以证明FP确实/不暗示对现代通用计算机体系结构的主要性能损失? 编辑: 正如我已经在回答某些评论时所说的那样,问题不在于实现性能和细节。这与是否存在主要开销有关,在有状态自动机上运行FP可能会带来这些开销。

5
可以在没有状态的情况下表示任何程序任务吗?
这是一个理论问题,但是经过多年的编程之后,我意识到现在是“正常的”命令式技术,主要使用C ++,我发现了函数式编程的另一个领域,在偶然学习JavaScript时偶然发现了这个问题。 这使我想知道您是否可以用一个纯粹的功能且没有状态的不同实现在技术上替换任何完整的面向状态的程序? 这是一个有趣的想法,我必须承认,函数编程的清晰性和优雅性确实让我大吃一惊。

1
我们在滥用静态方法吗?
几个月前,我开始从事一个新项目,在遍历代码时,它使我震惊了所使用的静态方法。它们不仅保留了实用程序方法collectionToCsvString(Collection<E> elements),而且还保留了大量业务逻辑。 当我问负责背后原因的那个人时,他说这是逃避斯普林暴政的一种方式。它围绕着这个思考过程进行了一些操作:要实现客户收据创建方法,我们可以提供服务 @Service public class CustomerReceiptCreationService { public CustomerReceipt createReceipt(Object... args) { CustomerReceipt receipt = new CustomerReceipt(); // creation logic return receipt; } } 现在,那个家伙说他不喜欢让Spring不必要地管理类,主要是因为它强加了限制,即客户类必须是Spring bean本身。我们最终将一切都由Spring管理,这几乎迫使我们以过程方式使用无状态对象。或多或少在这里说了什么https://www.javacodegeeks.com/2011/02/domain-driven-design-spring-aspectj.html 因此,除了上面的代码,他有 public class CustomerReceiptCreator { public static CustomerReceipt createReceipt(Object... args) { CustomerReceipt receipt = new CustomerReceipt(); // creation logic return receipt; } } …

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.